{"id":49564457,"url":"https://github.com/karthikeyanloganathan/my-operations","last_synced_at":"2026-05-31T20:00:51.431Z","repository":{"id":354271275,"uuid":"1222879025","full_name":"KarthikeyanLoganathan/my-operations","owner":"KarthikeyanLoganathan","description":"My Operations - offline-first operations management with Google Sheets sync","archived":false,"fork":false,"pushed_at":"2026-05-09T08:31:48.000Z","size":5803,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-09T08:42:52.448Z","etag":null,"topics":["employee","finance","inventory","procurement","project-management"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KarthikeyanLoganathan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-27T19:52:29.000Z","updated_at":"2026-05-09T08:31:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/KarthikeyanLoganathan/my-operations","commit_stats":null,"previous_names":["karthikeyanloganathan/my-operations"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/KarthikeyanLoganathan/my-operations","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarthikeyanLoganathan%2Fmy-operations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarthikeyanLoganathan%2Fmy-operations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarthikeyanLoganathan%2Fmy-operations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarthikeyanLoganathan%2Fmy-operations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KarthikeyanLoganathan","download_url":"https://codeload.github.com/KarthikeyanLoganathan/my-operations/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KarthikeyanLoganathan%2Fmy-operations/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33746513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["employee","finance","inventory","procurement","project-management"],"created_at":"2026-05-03T11:04:43.034Z","updated_at":"2026-05-31T20:00:51.422Z","avatar_url":"https://github.com/KarthikeyanLoganathan.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Operations\n\nA Flutter-based offline-first operations management system covering the full procurement lifecycle — from vendor and material master data, through project planning and estimation, to purchase orders, goods receipts, and payments — with optional Google Sheets sync.\n\nThe app leverages the compute capabilities of mobile devices to give a simple purchase experience. For backup and collaboration it uses Google Sheets as a serverless backend via Google Apps Script — no traditional server infrastructure required.\n\n**Key principle**: Offline-first design means the app works perfectly without internet connectivity, with sync as an optional feature rather than a requirement.\n\n## Features\n\n### Master Data Management\n- **Vendors/Suppliers**: Manage vendor information, contacts, capabilities, and addresses\n- **Manufacturers**: Track manufacturer data and product availability\n- **Materials/Products**: Comprehensive product catalog with specifications and attached documents\n- **Manufacturer-Material Mapping**: Track which manufacturers supply which materials\n- **Vendor Price Lists**: Dynamic pricing by vendor and material\n- **Currencies**: Multi-currency support with conversion\n- **Units of Measure**: Flexible unit management (kg, pcs, hrs, etc.)\n- **Application Defaults**: Centralized configuration management\n\n### Project Management \u0026 Estimation\n- **Projects**: Group all procurement and planning activity under a project or cost centre; supports sub-projects\n- **Project Locations**: Track multiple sites or delivery locations per project\n- **Sales Planning**: Add sales items to a project and derive material requirements from bill of materials\n- **Physical Completion Tracking**: Record `quantityCompleted` per sales item; `valueCompleted` and `percentageCompleted` are derived per item and rolled up to the project. Project card and summary display overall completion percentage\n- **Material Requirements**: Track required materials per project — automatically derived from the sales plan or entered manually\n- **Preferred Materials**: Select preferred vendor/manufacturer material for each requirement\n- **Estimation**: Review material requirements with preferred prices to estimate project procurement cost\n- **Project Baskets \u0026 Purchase Orders**: Create shopping baskets and purchase orders directly linked to a project\n- **Project Payments**: Record and track all payments made against a project\n- **Payment Schedules**: Auto-generated prorata milestone installments (advance + monthly); tracks percentage, amount, due date, invoice reference, and status lifecycle (PLANNED → DUE → INVOICED → RECEIVED)\n- **Expense Tracking**: Real-time purchase expense (Σ PO payments) and labour expense (Σ completed attendance wages) per project; drives profit visibility against totalAmount\n- **Project Stock Overview**: View current stock and material consumption per project (goods received vs. requirements)\n- **Project Summary**: Consolidated cost, payment, and stock view for a project\n\n### Commitments \u0026 Accounting\n\n- **Commitment System**: First-class `commitments` table (polymorphic source pattern) tracks open/partial/closed financial obligations — PO payment commitments, goods-delivery commitments, employee wage commitments, and project revenue commitments (from payment schedules)\n- **Commitment Fulfillments**: Partial fulfillment tracking via `commitment_fulfillments`; commitments move OPEN → PARTIAL → CLOSED as payments and goods receipts arrive\n- **Chart of Accounts**: 13 seeded double-entry accounts (assets, liabilities, equity, revenue, expenses) — see `AccountCodes`\n- **Journal Entries**: Auto-generated double-entry GL entries for goods receipts, vendor payments, project revenue receipts, wage accruals, employee wage payments, and stock consumption write-offs; each domain BO owns the posting for its events; posted entries are immutable (corrections via reversal)\n\n### Employee \u0026 Attendance Management\n- **Employees**: Manage employee profiles, daily wage rates, and address details\n- **Attendance Tracking**: Record daily attendance with duration and wage calculation; calendar view of attendance history\n- **Wage Ledger**: Track outstanding wage balances per employee with payment history\n\n### Transaction \u0026 Workflow Management\n- **Shopping Baskets**: Cart-like system for accumulating purchase items, linkable to a project\n- **Request for Quotations (RFQ)**: Generate quote requests to vendors from basket items\n- **Quotations**: Manage and compare vendor quotations; promote the winning quotation to a purchase order\n- **Purchase Orders**: Create, edit, and track purchase orders with multi-line items; link to project or basket\n- **Payments**: Record payments against purchase orders, projects, or employees; track paid amount and outstanding balance\n- **Goods Receipts \u0026 Material Movements**: Record goods received, returns, project consumption, and global stock write-offs; `direction` (INBOUND/OUTBOUND) derived from movement `type`; tracks delivered vs. ordered quantities per PO line\n- **Sales Materials \u0026 Bill of Materials**: Manage sales-side product structures\n- **Multi-currency Transactions**: Automatic currency handling across all transaction types\n\n### Inventory \u0026 Stock\n- **Global Stock View**: Cross-project view of all materials received, on order, and available; tracks global stock consumption write-offs (non-project overhead materials)\n- **Project Stock**: Per-project view of materials received vs. required, with project consumption tracking\n- **Material Movement History**: Full audit trail of goods receipts, returns, and deliveries per purchase order\n- **Real-time Quantities**: Stock levels updated immediately on every goods receipt or delivery\n\n### Cloud Synchronization\n- **Bidirectional Sync**: Changes sync both to and from Google Sheets\n- **Delta Sync**: Only changed data is synchronized (95%+ bandwidth reduction)\n- **Conflict Resolution**: Server-wins, client-wins, or merge strategies\n- **Pause/Resume**: Users can control and interrupt sync operations\n- **Error Recovery**: Automatic retry and partial sync recovery\n\n### Data Management \u0026 Developer Tools\n- **CSV Import/Export**: Bulk import and export of master data\n- **Google Sheets Import/Export**: Pull and push data directly from/to Google Sheets\n- **Sample Data Import**: Seed the app with representative data for evaluation\n- **Database Browser**: Inspect SQLite schema and data directly\n- **Business Object Browser**: Inspect live in-memory BO state for debugging\n- **Test Case Recorder \u0026 Runner**: Record live sessions as a typed DSL, edit in-app, replay with pass/fail result; supports full arithmetic expressions, builtins (`currentDate()`, `currentDateTime()`), `expectFailure`/`failureMessage`, `realComparisonMargin` for float tolerance\n- **Data Consistency Check**: Validate referential integrity across all tables\n- **Metadata Browser**: Inspect all `EntityDefinition` and `EntityFieldDefinition` metadata — field types, semantics, formatting rules, and sync flags — per BusinessObject\n- **Sync Debug**: Monitor sync operations and the change log\n- **Housekeeping**: Archive, clean, or reset application data\n\n\n## Screenshots\n\n![Screenshots 1](./documentation/attachments/01.png)\n![Screenshots 2](./documentation/attachments/02.png)\n![Screenshots 3](./documentation/attachments/03.png)\n![Screenshots 4](./documentation/attachments/04.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarthikeyanloganathan%2Fmy-operations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarthikeyanloganathan%2Fmy-operations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarthikeyanloganathan%2Fmy-operations/lists"}