ShoppMate is a full-stack, smart shopping list management solution. It empowers users to organize their purchases, manage custom categories and units, and collaborate on shared lists.
This monorepo contains both the Spring Boot Backend and the Angular Frontend.
Based on our core API capabilities, ShoppMate offers a comprehensive suite of features:
- User Registration & Login: Secure JWT-based authentication.
- Profile Management: View and manage user details.
- Multi-list Management: Create, view, update, and delete multiple shopping lists.
- Item Organization: Add items to specific lists with quantity tracking and "purchased" status.
- Collaborative Lists: Share lists with other users by granting specific permissions (
READ,WRITE, etc.).
- Custom Categories: Organize your items into categories (e.g., Fruits, Cleaning, Dairy).
- Measurement Units: Define units like
kg,unit,liters, or any custom measurement. - Item Database: Create a reusable catalog of items to quickly add to your lists.
/backend: Spring Boot 3 REST API (Java 17, PostgreSQL, Flyway)./frontend: Angular 19+ Web Application (Material Design 3, Signals)./backend/bruno: API Testing collections for the Bruno client.
Before running the project, you need to configure the environment variables.
- Navigate to the
backend/directory. - Copy
.env.exampleto a new file named.env:cp .env.example .env
- (Optional) Edit
.envto customize your database credentials or JWT settings.
The easiest way to run the entire stack (Backend, Frontend, and Database) is using Docker Compose from the root directory:
docker compose up --buildAccess the application at:
- Frontend: http://localhost
- Backend API: http://localhost:8080
If you prefer to run the components individually for development:
You still need a PostgreSQL instance. You can run just the database via Docker:
docker compose up postgres -d- Navigate to
backend/. - Ensure you have Java 17 installed.
- Run with:
./mvnw spring-boot:run
- Navigate to
frontend/. - Install dependencies:
npm install
- Run with:
npm start
- Access at http://localhost:4200.
Contributions are welcome! Please check our CONTRIBUTING.md for guidelines on our development workflow and commit standards.
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License. See LICENSE.md for details.