version: 0.2.0
- Internationalization (Backend messages)
Plans for next versions:
- Delete provisioned products from the shopping cart
- Enter Ideal and Current quantity when adding new product direct to the pantry items list
- Wizard to create pantries based on a suggested list of basic items, instead of manually enter them.
- Dashboard
- CRUD for Role and Permissions
- Integrate with Google Home (ie: "Consume of from )
My Pantry manages pantries and automatically creates shopping lists as products are consumed from the
inventory.
You can also share your Pantries, Shopping Lists and Products with other users, by adding users to your Account Group.
The Authentication is possible by either Google Sign-in (Google IDToken - having localhost as callback) or by the traditional user/password.
The frontend is developed in Reactjs and Javascript, while backend is written in Java 17, Spring Boot and Spring Security.
- Install Docker and Maven
- Generate SECURITY_SECRET by running command:
openssl rand -hex 64
- If you want to use Google Sign-in, then get new Google Credentials for MyPantry app:
- Log in at https://console.developers.google.com/apis
- Create a new project (MyPantry)
- Follow the instructions to configure it: https://developers.google.com/identity/gsi/web/guides/get-google-api-clientid
- Download the source code
- Configure the environment variables in the docker-compose.yml:
- SECURITY_SECRET= <SECURITY_SECRET>
- GOOGLE_CLIENT_ID= <CLIENT_ID generated by Google>
- GOOGLE_CLIENT_SECRET= <CLIENT_SECRET generated by Google>
- ALLOWED_ORIGINS= <SAMPLE: http://loocalhost:3000, http://localhost:8080, http://localhost:8081>
- Navigate to my-pantry folder
- Run:
mvn clean install
- Run:
docker-compose up -d
- Manages Accounts, Account Groups and Account Group Members
- Manages Roles and Permissions
- Acts as Authentication server:
- validating the Google IDToken or the user/password informed
- issuing an JWT Token embedded in a Http Only Cookie
- Acts as Authorization server:
- retrieving the permissions associated to the user in a group
- Manages pantry, pantry items and products.
- Manages the consumption of the items in the pantry as well as their replenishment
- Sends events to purchase-service through a Kafka Topic (PurchaseCreateTopic) when PantryItem reaches the defined threshold (50%)
- Listens to Kafka Topic (PurchaseCompleteTopic) in order to update the Pantry Inventory once the Purchase Order is closed
- Stores data in Postgres
- Manages shopping lists
- Listens to Kafka Topic (PurchaseCreateTopic) to manage a list of items to be purchased
- Once the purchase is closed, an event is sent back to pantry-service through a Kafka Topic (PurchaseCompleteTopic)
- Stores data in Postgres