E. Leveque
ENTheme: system
← Back to the course (P1 · km 20)

GFaim

A meal planner for a family, my final-year project.

Sign-up, onboarding, family setup, allergies, meal calendar and a recipe. Mock data.

The problem

A professor wanted a meal planner for his family. The starting specification was fixed: we had to follow it. After that, the freedom to innovate beyond it.

The decisions

Tokens signed with RSA

Trade-off: The signature is checked with a public key, and the private key stays safe. Downside: generating and distributing keys is done by hand.

A dedicated certificate for the Spoonacular API

Trade-off: The HTTPS connection goes through a certificate imported by hand. Downside: a manual step to repeat on every machine.

The architecture

GFaim architectureThe native Android app calls the Quarkus API with a JWT signed with RSA. The API reads a PostgreSQL database and queries the external Spoonacular API over HTTPS, with a manually imported certificate.Android appnative, JavaGFaim API (Quarkus)Java 21, meal managementJWT signed with RSAOpenAPI doc (Swagger)PostgreSQLstarted by Docker ComposeSpoonacularexternal API, HTTPScertificate imported by handJWT (RSA)GFaim architectureThe native Android app calls the Quarkus API with a JWT. The API reads a PostgreSQL database and queries the external Spoonacular API, with a manually imported certificate.Android appnative, JavaJWT (RSA)GFaim API (Quarkus)Java 21, meal managementOpenAPI doc (Swagger)PostgreSQLstarted by Docker ComposeSpoonacularexternal API, HTTPScertificate imported by hand
Solid line: always called. Orange: the manual step, a certificate to import on every machine.

The wall at km 60

Getting four people's ideas to converge, and meeting the delivery deadlines.

What I take from it

A good result, and a good team experience.