Overview
Rise is a full-stack recipe sharing platform built as the 42 ft_transcendence project. It combines a React + Vite frontend, a Go backend with Gin, PostgreSQL persistence, and Docker Compose / nginx infrastructure to deliver a single-origin web app with authentication, permissions, and public and private flows.
The application supports email and Google sign-in, role-based access control, recipe browsing and creation, friendships with online presence, multilingual UI, an admin panel, and a documented public API protected by per-user API keys.
Key Features
- Email/password auth plus Google OAuth login
- Role-based permissions with admin and developer flows
- Recipe browsing with search, filters, sort controls, and infinite scroll
- Friendship system with pending and accepted states plus online presence
- Multilingual UI with English, Finnish, and Czech
- Public API guarded by per-user API keys and rate limiting
- Docker Compose deployment with nginx reverse proxy and PostgreSQL
Tech Stack
My Role
I owned the auth and security surface end-to-end: JWT generation and validation, token blacklist handling, authorization middleware, role and permission checks, the public API key flow, Cloudinary avatar signing, and input validation across user-update handlers. I also built the advanced recipe search backend.
Challenges & Learnings
The hardest part was keeping cookie-based JWT auth and API-key auth strictly separate while still making both flows ergonomic for the frontend. Designing per-user rate limiting and hashing API keys instead of storing them in plaintext reinforced how much the security model matters once a project grows beyond a simple login system.
Working on a team project at this scale also sharpened the trade-offs around layered backend design, database constraints, and clear division of responsibilities between the frontend, backend, and infrastructure pieces.