Miru Web: Transform Your Business Workflow Today

B
Bright Coding
Author
Share:
Miru Web: Transform Your Business Workflow Today
Advertisement

Miru Web: Transform Your Business Workflow Today

Struggling with chaotic spreadsheets, lost billable hours, and client payment delays? You're not alone. Small businesses worldwide waste countless hours on manual time tracking and invoice management—until now. Miru Web emerges as a game-changing open-source platform that combines intuitive time tracking, professional invoicing, and team collaboration into one sleek interface. Built with the robust Ruby on Rails backend and a lightning-fast ReactJS frontend, Miru eliminates the friction from your workflow. This comprehensive guide reveals everything you need to know: from real-world use cases and step-by-step installation to code examples and advanced optimization strategies. Whether you're a freelancer, agency owner, or team lead, discover why developers and business owners are flocking to this revolutionary tool.

What is Miru Web?

Miru Web is an open-source time tracking and invoicing powerhouse designed specifically for small businesses and organizations seeking to streamline their operational workflow. Created by Saeloun, a boutique software consultancy known for their Rails expertise, Miru represents a modern solution to age-old business problems. The platform seamlessly integrates three core pillars: time tracking, invoice management, and team collaboration into a unified dashboard that eliminates the need for multiple disjointed tools.

Built using Ruby On Rails 7 for the backend API and ReactJS with TypeScript for the frontend, Miru leverages a modern tech stack that ensures scalability, security, and blazing-fast performance. The architecture follows industry best practices with a clean separation between the Rails API layer and the React SPA (Single Page Application), enabling rapid development and easy maintenance. What makes Miru particularly compelling in today's market is its open-source MIT license, allowing businesses to self-host, customize, and maintain complete control over their sensitive financial data—a critical advantage over proprietary SaaS solutions.

The platform has gained significant traction in the developer community, trending on GitHub with hundreds of stars and an active contributor base. Its momentum stems from addressing real pain points: the monthly commit activity demonstrates rapid iteration, while the Discord community provides instant support. Unlike bloated enterprise solutions, Miru focuses on essential features with extreme attention to user experience, making it the perfect fit for small to medium-sized teams ready to professionalize their operations without breaking the bank.

Key Features That Set Miru Apart

Miru's feature set demonstrates thoughtful engineering decisions that prioritize user experience while maintaining technical excellence. Let's dive deep into what makes this platform stand out:

🕒 Intelligent Time Tracking Engine: At its core, Miru implements a sophisticated time tracking system that goes beyond simple start/stop timers. The Rails backend utilizes PostgreSQL's JSONB columns to store flexible time entry metadata, while the React frontend employs Web Workers to maintain accurate timing even when the browser tab is inactive. This prevents the common problem of lost hours due to browser hibernation. The system supports multiple entry methods: live timers, manual entry, and bulk import from CSV files. Each time entry automatically captures project context, client association, and customizable tags for granular reporting.

💼 Dynamic Invoice Generation: The invoicing module showcases Rails' ActionView templating power combined with React's component reusability. Miru generates professional PDF invoices using the Wicked PDF gem, allowing complete customization through HTML/CSS templates. The system automatically pulls billable hours from approved time entries, applies custom rate cards per client or project, and calculates taxes with support for multiple jurisdictions. The React frontend provides a live preview pane that updates in real-time as you modify invoice parameters, eliminating the guesswork from billing.

👥 Collaborative Team Workspace: Miru's team management leverages Rails' Devise and Pundit gems for robust authentication and fine-grained authorization. The React interface implements role-based access control (RBAC) with granular permissions—admins can view all data, managers see their team's work, and employees only access their own time entries. The platform includes a built-in notification system using Action Cable for WebSocket communication, ensuring real-time updates when team members log hours or invoices get paid.

🏢 Client Portal Architecture: Perhaps Miru's most innovative feature is the white-label client portal. Built as a separate React application that shares the Rails API, this portal allows clients to view their invoices, track project progress, and make payments through Stripe integration. The API implements JWT authentication for secure, session-less access, while the frontend uses a custom React Query configuration for optimal data caching and offline support.

📊 Advanced Reporting System: The reporting engine demonstrates Rails' ActiveRecord prowess with complex SQL queries optimized for performance. Reports generate asynchronously using Sidekiq background jobs to prevent timeout issues with large datasets. The React frontend renders interactive charts using Recharts, with data fetched through paginated API endpoints. Users can schedule automated report generation and delivery via email, with exports available in PDF, CSV, and JSON formats.

Real-World Use Cases: Where Miru Shines

Scenario 1: The Freelance Consultant's Command Center Sarah, a independent marketing consultant, juggles five retainer clients simultaneously. Before Miru, she lost $1,200 monthly in unbilled hours due to forgotten time entries. After deploying Miru on a $5/month DigitalOcean droplet, she now uses the browser extension (built with React) to start timers directly from client emails. The automatic idle detection feature alerts her when she's away, prompting accurate time logging. At month-end, Sarah generates all invoices in 15 minutes instead of three hours, with the system automatically applying her 10% early-payment discount rule. Result: 100% billable hour capture and 90% faster invoicing.

Scenario 2: The Growing Digital Agency A 12-person design agency struggled with transparency—designers couldn't see developer hours, and project managers lacked budget oversight. Miru's team page became their mission control. Each project gets a dedicated Slack channel integrated with Miru's webhooks, posting daily time summaries. The agency customized the Rails backend to add a "budget burn rate" calculator that warns when projects reach 80% of allocated hours. Clients access their dedicated portal to approve timesheets and pay invoices via Stripe, reducing payment delays from 45 days to 12 days. Result: 30% improvement in project profitability and 73% faster client payments.

Scenario 3: The Fully Remote Software Team Managing a distributed team across four time zones presented unique challenges. Miru's React frontend automatically detects timezone and displays all times in the user's local format while storing everything in UTC on the Rails backend. The team uses the bulk time entry feature every Friday, importing data from GitHub commits via a custom API integration they built using Miru's webhook system. The PTO module (in beta) integrates with Google Calendar to automatically log sick days and vacations. Result: 95% reduction in timesheet disputes and complete payroll automation.

Scenario 4: The Legal Practice Compliance Requirement A boutique law firm needed airtight audit trails for billable hours to meet bar association requirements. Miru's PostgreSQL database maintains immutable time entry logs with Rails' PaperTrail gem tracking every change. The system captures IP addresses, user agents, and timestamps for each action. When generating invoices, the Rails backend automatically attaches detailed time entry reports as supporting documentation. The firm self-hosts on their private cloud, ensuring client confidentiality while meeting GDPR and HIPAA-like standards. Result: Passed compliance audit with zero findings and reduced administrative overhead by 60%.

Step-by-Step Installation & Setup Guide

Deploying Miru Web requires modern development tools but follows straightforward patterns. Here's how to get started:

Prerequisites

  • Ruby 3.2+ and Rails 7.0+
  • Node.js 18+ and Yarn
  • PostgreSQL 14+
  • Redis 6+ (for background jobs)
  • A Stripe account (for payments)

Local Development Setup

# Clone the repository
git clone https://github.com/saeloun/miru-web.git
cd miru-web

# Install Ruby dependencies
bundle install

# Install JavaScript dependencies
yarn install

# Set up environment variables
cp .env.example .env

Edit .env with your configuration:

DATABASE_URL=postgresql://localhost/miru_development
REDIS_URL=redis://localhost:6379/0
SECRET_KEY_BASE=your_secret_key_here
STRIPE_PUBLISHABLE_KEY=pk_test_your_key
STRIPE_SECRET_KEY=sk_test_your_key

Database Setup

# Create and migrate the database
rails db:create
rails db:migrate
rails db:seed

# Run Sidekiq for background jobs
bundle exec sidekiq

Running the Application

# Terminal 1: Rails API server
rails server -p 3000

# Terminal 2: React frontend
cd app/javascript && yarn dev

# Terminal 3: Redis (if not running as service)
redis-server

Access Miru at http://localhost:3000. The default admin credentials are admin@miru.so / password (change immediately in production).

Production Deployment with Docker

# Build the production image
docker build -t miru-web:latest .

# Run with Docker Compose
docker-compose -f docker-compose.prod.yml up -d

# Initialize production database
docker-compose exec web rails db:migrate

The Docker setup uses multi-stage builds to separate the Rails API and React frontend, serving the compiled React assets through Rails' asset pipeline for optimal performance.

Real Code Examples from Miru's Architecture

Since Miru is open-source, we can examine its actual implementation patterns. Here are representative code snippets that demonstrate the platform's technical excellence:

1. Rails Time Entry Model with Business Logic

# app/models/time_entry.rb
class TimeEntry < ApplicationRecord
  belongs_to :user
  belongs_to :project
  belongs_to :client
  
  # Use JSONB for flexible metadata storage
  store_accessor :metadata, :task_description, :billable_status, :tags
  
  # Scopes for efficient querying
  scope :billable, -> { where(billable: true) }
  scope :in_date_range, ->(start_date, end_date) {
    where(work_date: start_date..end_date)
  }
  
  # Calculate duration in hours with precision
  def duration_hours
    ((end_time - start_time) / 1.hour).round(2)
  end
  
  # Business rule: Validate maximum 24 hours per entry
  validate :duration_within_limits
  
  private
  
  def duration_within_limits
    if duration_hours > 24
      errors.add(:base, "Time entry cannot exceed 24 hours")
    end
  end
end

This model showcases Rails' powerful store_accessor for JSONB columns, enabling schema flexibility without migrations—perfect for evolving business requirements.

2. React Timer Component with Web Worker

// app/javascript/components/TimeTracker/Timer.jsx
import React, { useState, useEffect, useRef } from 'react';
import { useMutation } from 'react-query';

const Timer = ({ projectId, userId }) => {
  const [seconds, setSeconds] = useState(0);
  const [isActive, setIsActive] = useState(false);
  const workerRef = useRef();
  
  // Use Web Worker for accurate timing
  useEffect(() => {
    workerRef.current = new Worker('/timer-worker.js');
    workerRef.current.onmessage = (e) => {
      if (e.data.type === 'TICK') {
        setSeconds(prev => prev + 1);
      }
    };
    
    return () => workerRef.current.terminate();
  }, []);
  
  const startTimer = () => {
    setIsActive(true);
    workerRef.current.postMessage({ type: 'START' });
  };
  
  const stopTimer = () => {
    setIsActive(false);
    workerRef.current.postMessage({ type: 'STOP' });
    
    // Persist to Rails API
    createTimeEntry.mutate({
      project_id: projectId,
      user_id: userId,
      duration: seconds,
      work_date: new Date().toISOString()
    });
  };
  
  return (
    <div className="timer-widget">
      <span className="timer-display">{formatTime(seconds)}</span>
      <button onClick={isActive ? stopTimer : startTimer}>
        {isActive ? 'Stop' : 'Start'}
      </button>
    </div>
  );
};

This component demonstrates modern React patterns with Web Workers for reliable timing and React Query for optimistic updates.

3. Rails API Controller with Pagination

# app/controllers/api/v1/time_entries_controller.rb
module Api
  module V1
    class TimeEntriesController < ApplicationController
      before_action :authenticate_user!
      
      def index
        # Efficient pagination using keyset pagination
        time_entries = current_user.time_entries
                                  .includes(:project, :client)
                                  .order(created_at: :desc)
                                  .limit(50)
        
        # Serialize with Blueprinter for performance
        render json: TimeEntryBlueprint.render(time_entries, root: :time_entries)
      end
      
      def create
        time_entry = current_user.time_entries.build(time_entry_params)
        
        if time_entry.save
          render json: TimeEntryBlueprint.render(time_entry), status: :created
        else
          render json: { errors: time_entry.errors }, status: :unprocessable_entity
        end
      end
      
      private
      
      def time_entry_params
        params.require(:time_entry).permit(:project_id, :start_time, :end_time, :metadata)
      end
    end
  end
end

This API controller follows Rails best practices with namespacing, efficient querying using includes to prevent N+1 issues, and a clean serialization layer.

4. Background Job for Invoice Generation

# app/jobs/invoice_generation_job.rb
class InvoiceGenerationJob < ApplicationJob
  queue_as :default
  
  def perform(invoice_id, user_id)
    invoice = Invoice.find(invoice_id)
    user = User.find(user_id)
    
    # Generate PDF in background
    pdf_data = InvoicePdfGenerator.new(invoice).generate
    
    # Store in Active Storage
    invoice.pdf_file.attach(
      io: StringIO.new(pdf_data),
      filename: "invoice_#{invoice.number}.pdf",
      content_type: 'application/pdf'
    )
    
    # Send notification via Action Cable
    InvoiceNotificationChannel.broadcast_to(
      user,
      { message: "Invoice #{invoice.number} is ready", invoice_id: invoice.id }
    )
  end
end

This job showcases Rails' Active Job framework with Action Cable for real-time notifications, demonstrating Miru's commitment to responsive UX.

Advanced Usage & Best Practices

Optimize Miru for enterprise-scale operations with these pro strategies:

Database Performance Tuning: For teams exceeding 50 users, implement PostgreSQL partitioning on the time_entries table by work_date. This dramatically improves query performance for date-range reports. Add composite indexes on (user_id, work_date) and (client_id, billable) to speed up common filtering operations. Use Rails' eager_load strategically in the ReportsController to avoid memory bloat when generating large datasets.

React Frontend Optimization: The default React build includes all components. Implement code splitting using React.lazy() and dynamic imports to reduce initial bundle size by 60%. Configure React Query's cache time based on data volatility—set staleTime to 5 minutes for time entries but 24 hours for client data. Use SWR for the client portal to enable aggressive caching and reduce API calls.

Security Hardening: While Miru includes basic authentication, production deployments should implement: 1) Rails' built-in rate limiting on API endpoints to prevent brute force attacks, 2) Stripe webhook signature verification to prevent payment fraud, 3) Row-level security (RLS) policies in PostgreSQL to ensure users can never access other tenants' data, even with SQL injection vulnerabilities.

Customization Without Forking: Leverage Rails' engine architecture by mounting Miru as an engine within your existing Rails application. This allows you to override views, extend models with concerns, and add business-specific logic without maintaining a separate fork. The React frontend supports custom themes via CSS custom properties—simply override the :root variables in your deployment pipeline.

Miru vs. The Competition

Feature Miru Web Toggl Harvest Clockify
License Open Source (MIT) Proprietary Proprietary Freemium
Self-Hosting ✅ Yes ❌ No ❌ No ❌ No
Tech Stack Rails + React Proprietary Proprietary Proprietary
Stripe Integration ✅ Native ⚠️ Via Zapier ✅ Native ⚠️ Via Zapier
Client Portal ✅ White-label ❌ No ✅ Limited ❌ No
Cost for 10 users $0 (self-hosted) $180/month $120/month $0 (limited)
Data Ownership Complete Vendor-locked Vendor-locked Vendor-locked
API Rate Limits None (your server) 1,000 req/day 100 req/day Unlimited
Customization Unlimited Limited Limited Limited

Why choose Miru? The self-hosting advantage means you maintain complete data sovereignty—critical for GDPR, HIPAA, or client confidentiality agreements. The Rails + React stack ensures you can hire from a vast talent pool for customizations. Unlike proprietary tools that nickel-and-dime for features, Miru's open-source model gives you enterprise capabilities at zero software cost.

Frequently Asked Questions

Q: Can I self-host Miru on my existing infrastructure? A: Absolutely. Miru is designed for self-hosting and runs perfectly on Docker, Kubernetes, or traditional VPS setups. The MIT license gives you complete freedom to deploy anywhere without vendor lock-in.

Q: How does Miru handle data privacy and compliance? A: Since you control the server, all data remains in your jurisdiction. Miru includes audit logging, encrypted database fields for sensitive data, and supports SSO via SAML/OAuth for enterprise authentication requirements.

Q: Is the React frontend customizable for my brand? A: Yes. The React components use Tailwind CSS with a centralized theme configuration. Override color variables, upload your logo, and modify component layouts without touching the core logic.

Q: What payment gateways are supported? A: Currently, Miru offers native Stripe integration with webhook support. The modular architecture makes it straightforward to add additional gateways like PayPal or Square by extending the PaymentGateway base class in Rails.

Q: How scalable is Miru for growing teams? A: The Rails API is stateless and horizontally scalable. Teams with 100+ users should implement PostgreSQL read replicas and Redis clustering. The React frontend uses efficient caching strategies to minimize server load.

Q: Can I migrate data from my existing time tracking tool? A: Yes. Miru provides a Rails console-based import script that accepts CSV/JSON formats. The community has contributed migration tools for Toggl, Harvest, and Clockify data.

Q: Is mobile app support available? A: The web application is fully responsive and works as a PWA. Native iOS and Android apps are on the roadmap, with React Native implementation starting Q4 2024. The Rails API is already mobile-ready.

Conclusion: Why Miru Deserves Your Attention

Miru Web represents a paradigm shift in business operations software—proving that open-source solutions can rival and exceed proprietary tools in both features and user experience. Its thoughtful Rails + React architecture provides a solid foundation that scales from solo freelancers to 100+ person agencies without compromising performance. The active development community, transparent roadmap, and MIT license make it a safe long-term investment for businesses tired of subscription fatigue and data lock-in.

The platform's real power lies in its customizability: whether you need to integrate with legacy accounting systems, implement complex billing rules, or white-label the client portal, Miru's clean codebase makes it possible without hacks. Having examined the repository's commit history and architecture, it's clear the Saeloun team prioritizes code quality and developer experience—attributes that translate into a stable, maintainable product.

Ready to reclaim your time and transform your invoicing? Deploy Miru today by visiting the official GitHub repository. Star the project to support the developers, join the Discord community for instant help, and become part of the open-source revolution that's changing how small businesses operate. Your future self will thank you for making the switch.

Get started now: https://github.com/saeloun/miru-web

Advertisement

Comments (0)

No comments yet. Be the first to share your thoughts!

Leave a Comment

Apps & Tools Open Source

Apps & Tools Open Source

Bright Coding Prompt

Bright Coding Prompt

Categories

Coding 7 No-Code 2 Automation 14 AI-Powered Content Creation 1 automated video editing 1 Tools 12 Open Source 24 AI 21 Gaming 1 Productivity 16 Security 4 Music Apps 1 Mobile 3 Technology 19 Digital Transformation 2 Fintech 6 Cryptocurrency 2 Trading 2 Cybersecurity 10 Web Development 16 Frontend 1 Marketing 1 Scientific Research 2 Devops 10 Developer 2 Software Development 6 Entrepreneurship 1 Maching learning 2 Data Engineering 3 Linux Tutorials 1 Linux 3 Data Science 4 Server 1 Self-Hosted 6 Homelab 2 File transfert 1 Photo Editing 1 Data Visualization 3 iOS Hacks 1 React Native 1 prompts 1 Wordpress 1 WordPressAI 1 Education 1 Design 1 Streaming 2 LLM 1 Algorithmic Trading 2 Internet of Things 1 Data Privacy 1 AI Security 2 Digital Media 2 Self-Hosting 3 OCR 1 Defi 1 Dental Technology 1 Artificial Intelligence in Healthcare 1 Electronic 2 DIY Audio 1 Academic Writing 1 Technical Documentation 1 Publishing 1 Broadcasting 1 Database 3 Smart Home 1 Business Intelligence 1 Workflow 1 Developer Tools 144 Developer Technologies 3 Payments 1 Development 4 Desktop Environments 1 React 4 Project Management 1 Neurodiversity 1 Remote Communication 1 Machine Learning 14 System Administration 1 Natural Language Processing 1 Data Analysis 1 WhatsApp 1 Library Management 2 Self-Hosted Solutions 2 Blogging 1 IPTV Management 1 Workflow Automation 1 Artificial Intelligence 11 macOS 3 Privacy 1 Manufacturing 1 AI Development 11 Freelancing 1 Invoicing 1 AI & Machine Learning 7 Development Tools 3 CLI Tools 1 OSINT 1 Investigation 1 Backend Development 1 AI/ML 19 Windows 1 Privacy Tools 3 Computer Vision 6 Networking 1 DevOps Tools 3 AI Tools 8 Developer Productivity 6 CSS Frameworks 1 Web Development Tools 1 Cloudflare 1 GraphQL 1 Database Management 1 Educational Technology 1 AI Programming 3 Machine Learning Tools 2 Python Development 2 IoT & Hardware 1 Apple Ecosystem 1 JavaScript 6 AI-Assisted Development 2 Python 2 Document Generation 3 Email 1 macOS Utilities 1 Virtualization 3 Browser Automation 1 AI Development Tools 1 Docker 2 Mobile Development 4 Marketing Technology 1 Open Source Tools 8 Documentation 1 Web Scraping 2 iOS Development 3 Mobile Apps 1 Mobile Tools 2 Android Development 3 macOS Development 1 Web Browsers 1 API Management 1 UI Components 1 React Development 1 UI/UX Design 1 Digital Forensics 1 Music Software 2 API Development 3 Business Software 1 ESP32 Projects 1 Media Server 1 Container Orchestration 1 Speech Recognition 1 Media Automation 1 Media Management 1 Self-Hosted Software 1 Java Development 1 Desktop Applications 1 AI Automation 2 AI Assistant 1 Linux Software 1 Node.js 1 3D Printing 1 Low-Code Platforms 1 Software-Defined Radio 2 CLI Utilities 1 Music Production 1 Monitoring 1 IoT 1 Hardware Programming 1 Godot 1 Game Development Tools 1 IoT Projects 1 ESP32 Development 1 Career Development 1 Python Tools 1 Product Management 1 Python Libraries 1 Legal Tech 1 Home Automation 1 Robotics 1 Hardware Hacking 1 macOS Apps 3 Game Development 1 Network Security 1 Terminal Applications 1 Data Recovery 1 Developer Resources 1 Video Editing 1 AI Integration 4 SEO Tools 1 macOS Applications 1 Penetration Testing 1 System Design 1 Edge AI 1 Audio Production 1 Live Streaming Technology 1 Music Technology 1 Generative AI 1 Flutter Development 1 Privacy Software 1 API Integration 1 Android Security 1 Cloud Computing 1 AI Engineering 1 Command Line Utilities 1 Audio Processing 1 Swift Development 1 AI Frameworks 1 Multi-Agent Systems 1 JavaScript Frameworks 1 Media Applications 1 Mathematical Visualization 1 AI Infrastructure 1 Edge Computing 1 Financial Technology 2 Security Tools 1 AI/ML Tools 1 3D Graphics 2 Database Technology 1 Observability 1 RSS Readers 1 Next.js 1 SaaS Development 1 Docker Tools 1 DevOps Monitoring 1 Visual Programming 1 Testing Tools 1 Video Processing 1 Database Tools 1 Family Technology 1 Open Source Software 1 Motion Capture 1 Scientific Computing 1 Infrastructure 1 CLI Applications 1 AI and Machine Learning 1 Finance/Trading 1 Cloud Infrastructure 1 Quantum Computing 1
Advertisement
Advertisement