This roadmap is the single source of direction for contributors and maintainers.
Purpose:
- Make the project production-minded and contributor-friendly.
- Turn this repository into a practical learning path for real-world backend engineering.
How to use this file:
- Pick tasks marked [good first issue] if you are new.
- Pick [help wanted] for medium complexity.
- Pick [advanced] for architecture-heavy or migration-heavy work.
- Use [discussion] items to propose direction before writing code.
Status model:
- Planned: approved idea, not started.
- In Progress: active work in issues/PRs.
- Completed: merged and documented.
By the end of this roadmap, this repository should be:
- Easy to run locally in minutes.
- Safe to contribute to without breaking main.
- Structured like a professional Java backend project.
- Feature-complete enough to demonstrate full e-commerce workflows.
- Rich in system design and scalability concepts for learning and interviews.
- Keep the current stack direction: Spring Boot + server-rendered views (JSP).
- Prefer incremental modernization over big-bang rewrites.
- Every feature must include test coverage and docs updates.
- Every merge to main should pass CI.
- Optimize for contributor onboarding and maintainability.
- Rewrite to another backend framework (for example Quarkus or Micronaut).
- Replace the current JSP-based UI with a React/Vue rewrite as part of this roadmap.
Reason:
- The goal is to evolve this codebase, not restart from scratch.
Timeline: Current focus (0 to 8 weeks) Goal: Make this a trustworthy, runnable, and maintainable reference project.
- Triage and close high-impact bugs from open issues and active PRs. [help wanted]
- Standardize error handling for controller and service layers. [help wanted]
- Remove remaining dead code and inconsistent naming in core modules. [help wanted]
- Docker Compose local setup (app + MySQL) with one command startup. [help wanted]
- GitHub Actions pipeline running mvn clean verify on every PR. [help wanted]
- Issue templates and pull request template under .github/. [good first issue]
- CONTRIBUTING.md with branch naming, commit conventions, and local run/test commands. [good first issue]
- Add Checkstyle and enforce it in build and CI. [help wanted]
- Add profiles for dev, test, prod with clean configuration split. [help wanted]
- Upgrade to Java 17 and Spring Boot 3.x. [advanced]
- Migrate javax.* imports to jakarta.* as required. [help wanted]
- Verify Hibernate, security, and plugin compatibility post-migration. [advanced]
- Unit tests for all service classes using JUnit 5 + Mockito. [good first issue]
- Controller integration tests using @WebMvcTest. [help wanted]
- Add JaCoCo report and README coverage badge. [good first issue]
- DAO tests with Testcontainers MySQL for CI portability. [advanced]
- New contributor can run app locally with docs and docker-compose.
- Every PR executes automated build and test checks.
- Main branch remains green for 30 consecutive days.
- Core modules have meaningful baseline unit/integration coverage.
Timeline: After Phase 1 is stable (8 to 16 weeks) Goal: Move from a skeleton to a complete and coherent e-commerce flow.
- Complete cart lifecycle (add, update, remove, clear). [help wanted]
- Implement checkout flow with order placement and confirmation. [advanced]
- Introduce order states (created, paid, failed, shipped, delivered, canceled). [help wanted]
- Global exception handler for API and controller exceptions. [help wanted]
- Pagination and sorting for product and customer listings. [good first issue]
- Database migrations with Flyway. [help wanted]
- Structured logging with SLF4J and consistent log levels. [help wanted]
- Real image upload (multipart) with local storage abstraction and cloud-ready design. [advanced]
- Product search by name and category (DB-level first). [good first issue]
- Stock status and disabled add-to-cart for quantity 0. [good first issue]
- Password reset with time-bound token. [advanced]
- Email verification on registration. [advanced]
- Remember-me login support. [help wanted]
- Multiple addresses per user and delivery selection. [help wanted]
- OpenAPI 3 / Swagger UI integration and endpoint docs generation. [good first issue]
- End-to-end purchase flow works from product browse to order creation.
- Error handling and pagination are implemented in major flows.
- Migrations are source-controlled and repeatable.
Timeline: After Phase 2 feature completeness (16 to 28 weeks) Goal: Teach production-grade concepts used in large-scale Java systems.
- Add key DB indexes and document query plans for hot paths. [help wanted]
- Introduce Redis caching for read-heavy endpoints. [advanced]
- Tune connection pool and benchmark critical endpoints. [help wanted]
- Optimistic locking for inventory update races. [advanced]
- Pessimistic locking demo and tradeoff documentation. [advanced]
- Integrate Elasticsearch for full-text product search. [advanced]
- Keep SQL search as fallback mode for local environments. [help wanted]
- Bloom filter for fast existence pre-checks (user/product scenarios). [advanced]
- Document false-positive tradeoffs and where not to use it. [discussion]
- Strategy pattern for payment options (COD, mock card, mock UPI). [advanced]
- Factory pattern for discount and coupon calculations. [advanced]
- Spring Boot Actuator endpoints (health, metrics, info). [good first issue]
- Prometheus + Grafana setup with docker-compose profile and sample dashboard. [advanced]
- JSON structured logging with Logback. [help wanted]
- At least one documented concurrency strategy in inventory path.
- Search supports both database fallback and Elasticsearch mode.
- Operational metrics are available and graphable.
Timeline: Long-term and community-driven (28+ weeks) Goal: Explain and prototype decomposition paths without breaking the monolith learning path.
- Write a decomposition plan for user, product, order, notification services. [discussion]
- Document tradeoffs between monolith and microservices. [discussion]
- Introduce Kafka-based order events and subscribers. [advanced]
- Demonstrate eventual consistency and retry patterns. [advanced]
- Architecture docs clearly show boundaries and communication patterns.
- At least one event-driven business workflow is implemented and tested.
This is always active and should not wait for feature phases.
- Dependabot for pom.xml dependency updates. [good first issue]
- Stale bot for inactive issues and PRs with clear messaging. [good first issue]
- Checkstyle gate in CI for all PRs. [help wanted]
- PR size labeler (size/S, size/M, size/L). [good first issue]
- docs/adr/ for architecture decision records. [good first issue]
- docs/architecture.md with component diagram (Mermaid preferred). [good first issue]
- SECURITY.md with responsible disclosure process. [good first issue]
- Learning path docs or wiki (DAO -> Service -> Controller -> View). [good first issue]
- Weekly issue triage and labeling.
- Monthly roadmap check-in and phase status update.
- Contributor spotlight in release notes for merged community PRs.
Use these labels consistently on issues:
- roadmap/phase-1
- roadmap/phase-2
- roadmap/phase-3
- roadmap/phase-4
- good first issue
- help wanted
- advanced
- discussion
- blocked
- priority/high
- priority/medium
- priority/low
New contributor:
- Pick any issue labeled good first issue and roadmap/phase-1.
- Open draft PR early and ask for direction.
Regular contributor:
- Pick help wanted items from active phase.
- Include tests, docs, and migration notes in the same PR.
Maintainer:
- Keep issue labels and phase board updated.
- Reject feature PRs that bypass tests or docs.
Every PR should:
- Pass CI build and tests.
- Include tests for behavior changes.
- Keep scope focused (avoid mega PRs).
- Update docs when behavior, setup, or architecture changes.
- Include rollback notes for risky changes.
Technical quality drives stars, but communication multiplies growth.
- Keep main branch stable and green.
- Publish clear release notes for each milestone.
- Maintain a visible public roadmap and status updates.
- Mark beginner-friendly issues clearly and keep them fresh.
- Add before/after screenshots and architecture diagrams per major phase.
- Promote milestone achievements (for example: Spring Boot 3 migration complete, full checkout complete).
- Number of contributors and first-time contributors.
- PR lead time and merge rate.
- CI pass rate on PRs.
- Open issues by priority.
Top priorities right now:
- Docker Compose local setup.
- GitHub Actions CI for pull requests.
- CONTRIBUTING.md + issue/PR templates.
- Baseline tests for services and controllers.
- Spring Boot 3 / Java 17 migration plan and spike.
If you want to contribute today, start from these five.