Project Execution Plan — Laundry Management System
| Field |
Value |
| Project |
Laundry Management System |
| Version |
1.0 |
| Language |
English |
| Methodology |
Scrum |
| Sprint Duration |
2 weeks |
| Document Type |
Project Execution Plan |
Table of Contents
- Team Roles & Responsibilities
- Sprint Structure & Ceremonies
- Phase Breakdown
- Dependency Map
- Milestones & Deliverables
- Risk Register
- Communication Plan
- Definition of Done
- Tools Summary
1. Team Roles & Responsibilities
| Role |
Responsibilities |
Skills Required |
| Backend Developer (1-2) |
ASP.NET Core API, EF Core, database schema, accounting engine, sync engine, license system |
C#, SQL, Docker, Clean Architecture |
| Frontend Developer (1-2) |
Angular, NgRx, PrimeNG, Tauri integration, i18n, print/export services |
TypeScript, Angular, NgRx, CSS/SCSS |
| Tauri Developer (shared) |
Rust code for Tauri plugins, command handlers, client token injection |
Rust (basic), Tauri CLI |
| DevOps (shared) |
CI/CD pipelines, Docker Compose, Traefik, deployment automation, staging server |
GitHub Actions, Docker, Linux |
| QA (shared) |
Test case creation, manual Tauri checklist, accounting validation |
xUnit, Jest, manual testing |
| Project Lead |
Sprint planning, stakeholder communication, risk management, timeline |
Agile, domain knowledge |
Default assumption for timeline: 2 developers (1 backend, 1 frontend). If only 1 developer, double the timeline.
2. Sprint Structure & Ceremonies
| Ceremony |
When |
Duration |
Purpose |
| Sprint Planning |
First day of sprint |
2 hours |
Select backlog items, define sprint goal |
| Daily Standup |
Every day |
15 minutes |
What was done, what today, blockers |
| Sprint Review |
Last day of sprint |
1 hour |
Demo completed work to stakeholders |
| Sprint Retrospective |
Last day of sprint |
45 minutes |
What went well, what to improve |
| Backlog Refinement |
Mid-sprint |
1 hour |
Clarify upcoming stories, estimate effort |
3. Phase Breakdown
Phase 0: Project Setup & Foundation (Sprint 1-2, 4 weeks)
| Task |
Effort |
Output |
| Repository setup (GitHub, branches, protect rules) |
2 days |
Repo with Git Flow branches |
| GitHub Actions CI/CD pipelines (build-test, release) |
3 days |
3 workflow YAML files |
| Docker Compose configuration (dev + production) |
2 days |
docker-compose.yml, docker-compose.dev.yml |
| ASP.NET Core solution structure (4 projects) |
2 days |
Laundry.Api, .Application, .Domain, .Infrastructure |
| Angular project scaffolding (standalone, lazy modules) |
2 days |
Full module structure |
| Tauri initialization + plugin setup |
2 days |
src-tauri/ with all 8 plugins |
| EF Core Code-First configuration + initial migration |
2 days |
DbContext, initial schema |
| PostgreSQL test container setup |
1 day |
Integration test fixture |
| Jest configuration for Angular |
1 day |
jest.config.ts, setup-jest.ts |
| ESLint + Prettier configuration |
1 day |
.eslintrc.json, .prettierrc |
| Serilog + OpenTelemetry + Seq configuration |
2 days |
Logging infrastructure |
Phase 1: Master Data (Sprint 3-4, 4 weeks)
| Task |
Effort |
Output |
| User entity, authentication (JWT, BCrypt) |
3 days |
Login/logout, token refresh |
| Roles & permissions engine |
3 days |
Role-based middleware, permissions matrix |
| Branch entity & management UI |
2 days |
CRUD, online/offline toggle |
| Chart of Accounts entity & UI |
3 days |
Hierarchical tree, 24 default accounts |
| Customer entity, classification entity |
3 days |
CRUD, phone-based search |
| Garment types, service types, carpet types |
2 days |
CRUD, bi-directional linking |
| Price lists & price list entries |
3 days |
Flexible pricing, effective dates |
| Currencies, fiscal years, tax settings |
2 days |
Config tables, tax toggle |
Phase 2: Core Laundry Invoices (Sprint 5-7, 6 weeks)
| Task |
Effort |
Output |
| Invoice CRUD (Draft → Confirmed) |
5 days |
Full invoice lifecycle |
| Invoice status management (Operational + Financial) |
3 days |
State machines, status transitions |
| Barcode tag generation & printing |
3 days |
jsbarcode, print service |
| Customer classification pricing resolution |
3 days |
Auto-select price from classification → price list |
| Invoice search (name, phone, number, date, status) |
3 days |
Multi-field search API + UI |
| Invoice line item editor (garment + service + qty) |
3 days |
Dynamic line item form |
| Payments: single, multi-method, partial |
4 days |
Payment recording, paid/remaining calculation |
| Discounts: manual (% or fixed) + auto classification |
3 days |
Discount engine, mandatory reason |
| Deferred payment support |
2 days |
Credit limit check, AR entry |
| Cashier shift: open/close/discrepancy |
4 days |
Shift lifecycle |
| Tax calculation engine (optional toggle) |
2 days |
Tax on invoice, GL posting |
Phase 3: Accounting Engine (Sprint 7-9, 4 weeks — overlaps with Phase 2)
| Task |
Effort |
Output |
| General Ledger table + Journal Entry entity |
2 days |
Core accounting tables |
| Accounting Rules Engine |
3 days |
Configurable rules table, rule matching |
| All 13 accounting flow implementations |
8 days |
Invoice, payment, refund, damage, carpet, tailor |
| Balance calculation (SQL aggregates) |
2 days |
Customer/supplier/tailor balance queries |
| Trial Balance report (SUM debit == SUM credit) |
2 days |
Accounting integrity check |
| Income Statement + Balance Sheet |
3 days |
Core financial reports |
Phase 4: Carpet Module (Sprint 9-10, 3 weeks)
| Task |
Effort |
Output |
| Carpet Receipt (no price, no area) |
3 days |
Receipt CRUD, printable |
| Carpet Final Invoice (linked 1-to-1) |
3 days |
Final invoice with measured area |
| 3 Pricing Strategies (per m², per piece, cost-plus) |
2 days |
Strategy selector, auto-calculation |
| Advance payment handling (deduct, credit) |
2 days |
Credit creation on surplus |
| Carpet Company CRUD + settlement models |
3 days |
Accrual/Cash/Prepayment models |
| Company prices, assignments, payables |
3 days |
Purchase price matrix |
| Company Account Statement |
2 days |
Full transaction history |
Phase 5: Tailoring Module (Sprint 10-11, 2 weeks)
| Task |
Effort |
Output |
| Tailor profile CRUD + payout models |
2 days |
Periodic/Per-Item/Salary-Commission |
| Tailoring order CRUD |
2 days |
Standalone or linked to invoice |
| Tailor assignment + cost tracking |
2 days |
Per-task cost allocation |
| Tailor payout report + payment recording |
2 days |
Earned/paid/remaining balance |
| Tailor Account Statement |
1 day |
Full transaction history |
Phase 6: Inventory & Product Sales (Sprint 11-12, 2 weeks)
| Task |
Effort |
Output |
| Inventory item CRUD with UOM |
2 days |
Stock management |
| Stock receipts (increase inventory) |
1 day |
Purchase recording |
| Auto-deduct on sale (within or outside invoice) |
2 days |
COGS + inventory GL entries |
| Reorder level alerts |
1 day |
Low stock warning |
| Inventory valuation report |
2 days |
Current stock x cost price |
Phase 7: Offline Sync Engine (Sprint 12-14, 3 weeks)
| Task |
Effort |
Output |
| UUID-based sync status tracking |
2 days |
sync_status column on all tables |
| Export engine (Type 3 → .lndsync) |
3 days |
AES-256 encrypted ZIP |
| Import engine (central server) |
3 days |
Validate + UPSERT merge |
| Conflict resolution UI (phone collision, invoice number) |
2 days |
Admin decision popup |
| Health report generation |
1 day |
Embedded in sync file |
| Sync encryption (AES-256) |
2 days |
Key derivation from license |
| Master data update import (.lndmaster) |
2 days |
Price lists, services from central |
Phase 8: Returns, Damage, Corporate Billing (Sprint 14-15, 2 weeks)
| Task |
Effort |
Output |
| Invoice cancellation (reversing entry) |
2 days |
GL reversal, inventory restore |
| Refund document (paid invoices) |
2 days |
Refund GL entries, credit or cash |
| Damage/Loss marking + compensation |
2 days |
GL entries, damage report |
| Corporate monthly consolidated statement |
3 days |
Invoice grouping per month |
| Customer credit tracking |
2 days |
Credit balance, apply to invoices |
Phase 9: Reports & Analytics (Sprint 15-17, 4 weeks)
| Task |
Effort |
Output |
| Report API infrastructure (meta/summary/details/pagination) |
2 days |
Generic report pattern |
| Daily Sales, Shift Closing |
3 days |
Per-branch, date range |
| Customer Statement, General Ledger, Trial Balance |
5 days |
Running balance SQL |
| Income Statement, Balance Sheet |
3 days |
Accrual P&L + BS |
| Tailor Payout, Company Payables, Company Statement |
3 days |
Sub-ledger reports |
| Inventory Levels, Best-Selling Services |
2 days |
Stock + analytics |
| Corporate Summary, Damage Report, Discounts Overrides |
3 days |
Management reports |
| Branch Comparison, Audit Log |
2 days |
Multi-branch + security |
Phase 10: Polish, License, Wizard, Testing (Sprint 17-19, 4 weeks)
| Task |
Effort |
Output |
| License system (generator, validation, grace, hard stop) |
4 days |
Full license engine |
| Installation wizard (7 screens, 6 steps) |
5 days |
Bilingual wizard in Tauri |
| Browser blocking middleware (offline only) |
1 day |
Client token validation |
| Auto-update manifest + Tauri updater |
2 days |
Type 1 auto-update |
| Branch Setup USB package script |
2 days |
setup.bat / setup.sh |
| Comprehensive testing sprint (accounting validation) |
5 days |
All accounting flows tested |
| Performance optimization |
2 days |
Query tuning, indexing |
| Documentation finalization (all 20 docs) |
3 days |
Bilingual package |
| Staging deployment + smoke testing |
2 days |
Live staging test |
4. Dependency Map
Phase 0 ──────────────────────────────────────────────►
│
Phase 1 ──────────────────────────────────────────────►
│
├── Phase 2 ─────────────────────────────────────►
│ │
│ ├── Phase 4 (Carpet) ──────────────────►
│ │
│ ├── Phase 5 (Tailoring) ───────────────►
│ │
│ └── Phase 6 (Inventory) ────────────────►
│
├── Phase 3 (Accounting) ─────────────────────────►
│
└── Phase 7 (Sync) ───── depends on 2,3,4,5,6 ───►
│
Phase 8 ─────────────────► │
Phase 9 ─────────────────► │
Phase 10 ────────────────► │
▼
RELEASE
Parallel opportunities:
- Phase 4, 5, 6 can run in parallel after Phase 2 completes.
- Phase 3 runs alongside Phase 2 with a 1-week stagger.
- Phase 8 and Phase 9 can start after their dependencies and run in parallel.
- Phase 10 is sequential — depends on everything else.
With 2 developers: ~19 sprints = ~38 weeks
With 1 developer: ~30 sprints = ~60 weeks (serialize parallel phases)
5. Milestones & Deliverables
| Milestone |
Phase |
Deliverable |
| M1: Foundation Ready |
0 |
Repo, CI/CD, Docker Compose, project structure, initial migration |
| M2: Master Data Complete |
1 |
Users, roles, branches, CoA, customers, classifications, pricing |
| M3: First Invoice Created |
2 |
Draft → Confirm → Payment. Barcode tags printed. First cashier shift closed. |
| M4: Accounting Live |
3 |
All 13 accounting flows working. Trial Balance balances. |
| M5: Carpet + Tailoring Live |
4+5 |
Full carpet receipt→invoice flow. Tailor payout report. |
| M6: Offline Sync Working |
7 |
Export .lndsync from offline branch → import to central → data merged. |
| M7: All Reports Live |
8+9 |
All 16 reports displayed and exportable. |
| M8: Release Candidate |
10 |
License, wizard, auto-update, branch setup USB. All tests pass. |
| M9: Production Ready |
10 |
Staging verified. Documentation finalized. First customer deployment. |
6. Risk Register
| Risk |
Probability |
Impact |
Mitigation |
| Accounting engine bugs cause wrong financial numbers |
Medium |
Critical |
Automated tests verify SUM(debit)==SUM(credit) for every flow. Integration tests with real PostgreSQL. |
| Offline sync merge corrupts data |
Medium |
Critical |
UUID-based upsert. Validate before commit. Re-import is safe. Incremental development with staged releases. |
| Tauri plugin compatibility across OS versions |
Low |
Medium |
Build and test on all 3 platforms in CI. Manual test per release. |
| Hardware fingerprint breaks on legitimate hardware change |
Medium |
Medium |
Relaxed matching (2/4). Grace period allows continued operation. |
| Customer's PostgreSQL server runs out of disk |
Low |
High |
Seq alerts on disk usage. Regular backups with retention. |
| Migration breaks backward compatibility |
Medium |
Medium |
Additive-only migrations. Test upgrade path from previous version. Rollback via image tag. |
| Angular/NgRx learning curve for new developers |
Low |
Medium |
Facade pattern abstracts NgRx. Comprehensive documentation. |
| Thermal printer compatibility varies |
Medium |
Low |
CSS @media print approach avoids ESC/POS. User can configure paper size. |
| Docker resource usage on low-end branch PCs |
Medium |
Medium |
Alpine images keep footprint small. Minimum 8 GB RAM requirement. |
7. Communication Plan
| Channel |
Purpose |
Frequency |
| GitHub Issues |
Task tracking, bug reports, feature requests |
Continuous |
| GitHub Pull Requests |
Code review, merge discussion |
Per feature |
| GitHub Discussions |
Architectural decisions, RFCs |
As needed |
| Daily Standup |
Sync between developers |
Daily (15 min) |
| Sprint Review |
Demo to stakeholders |
Every 2 weeks |
| Release Notes |
What changed per release |
Per GitHub Release |
| Wiki / Docs |
Long-lived documentation |
Updated per sprint |
8. Definition of Done
A User Story is Done when:
- [ ] Code passes all automated tests (unit + integration)
- [ ] Code coverage meets thresholds (BE ≥ 80%, FE ≥ 70%)
- [ ] ESLint / Prettier clean
- [ ] PR reviewed and approved by at least one other developer
- [ ] EF Core migration added (if schema changed) and tested
- [ ] Feature demoed and accepted by Project Lead
- [ ] Documentation updated if API or behavior changed
- [ ] i18n keys added for both AR and EN
| Category |
Tool |
| Source Control |
GitHub |
| CI/CD |
GitHub Actions |
| Task Tracking |
GitHub Issues + Projects |
| Documentation |
GitHub Wiki + docs/ folder |
| Communication |
GitHub Discussions + direct messaging |
| Design |
Figma (for UI wireframes) |
| Backend IDE |
Visual Studio 2022 / Rider |
| Frontend IDE |
VS Code |
| API Testing |
Bruno |
| Database GUI |
DBeaver + TablePlus + pgAdmin |
| Container Registry |
GitHub Container Registry (ghcr.io) |
| Logging |
Seq (local Docker) |
| Tracing |
OpenTelemetry → Seq |
| Monitoring |
Health Checks UI + .NET Metrics |
Revision History
| Date |
Version |
Author |
Changes |
| 2026-05-10 |
1.0 |
Project Lead |
Initial project execution plan |