This project is a simple shopping list web application. It consists of a backend developed in Scala with Play and Slick
frameworks, frontend developed in Angular and PostgreSQL database for persistence layer.
It provides basic functionalities to manage a shopping list including adding and removing items as well as choosing the
date of purchase.
- Ensure you have Docker and Docker Compose installed on your system.
- Clone the repository.
- Navigate to the root directory of the project.
- Run
docker-compose up
to start the services. - Application will be available at http://localhost:4200
The backend of the Shopping List project is built using Scala Play which is lightweight and scalable web framework. It provides endpoints to handle user authentication and items management required for an online shopping list system. Scala Slick was used as a data access library for application making it easy to work with relational databases.
- Scala 3.3.1
- Play Framework
- Slick
- PostgreSQL
- ScalaTest for unit testing
This relational model represents the structure of tables in a database.
Backend was thoroughly unit tested using a behavioral style along with mocking.
The frontend of the Shopping List project is built using Angular framework, providing a modern and responsive user interface for users to use application.
- Angular
- TypeScript
- HTML
- Bootstrap styling
- Cypress for e2e testing
Frontend was extensively tested using unit, integrated and e2e tests with cypress. Unit tests were written to test individual components such as Angular components or services. Integrated tests were created to validate the interaction between different components. Cypress was used to simulate user interactions across the entire application.
-
Unit and Integration Tests
-
Tests Coverage
-
Cypress Tests
Docker Compose configuration is provided to easily deploy the Shopping List project along with its dependencies in isolated containers.
- Backend (Scala Play)
- Frontend (Angular)
- PostgreSQL Database
-
Login Form
- The login form allows user to enter their credentials.
-
Registration Form
- The registration form allows new users to create an account.
-
Main Page
- The home page serves as the main landing page of the application.
-
New Item Form
- The item creation form allows users to add new items to the list.
-
List View
- The current list is displayed at main page.
-
Ticking Out Items
- Items can be marked as purchased.