Pin the Mood & Never Forget a Recommendation Again!
You can explore the live application without signing up by using the demo credentials below:
- Username: demo-user
- Password: Demo1234
Note: The demo account is shared between users, so data may change or be reset.
Recommendation Tracker is a full-stack web application designed to help users log, track, and filter recommendations (movies, books, TV shows, etc.) they receive from friends.
We often get recommendations but forget them by the time we are in the mood to watch or read something. This app solves that problem by allowing users to filter their collection based on mood, category, or recommender.
This project was built as part of the CodeYourFuture course by a team of 3 developers.
- User Authentication: Secure Login, Signup, and Password Reset (via Email/AWS SES).
- Create & Manage: Add new recommendations with title, category, recommender name, and moods.
- Image Upload: Upload cover images for your recommendations.
- Smart Filtering: Filter your list by:
- Mood (e.g., Upbeat, Thoughtful, Self-Improvement)
- Category (Movie, Book, TV Show, etc.)
- Recommender Name
- Responsive Design: Works seamlessly on desktop and mobile devices.
- Persistent Storage: Data is stored in a PostgreSQL database and images are saved securely.
Frontend:
- React (Vite)
- Tailwind CSS & DaisyUI (Styling)
- React Router (Navigation)
- Zod (Form Validation)
Backend:
- Node.js & Express
- Multer (Image Uploads)
- AWS SES (Email Service)
- JSON Web Token (JWT) & BCrypt (Security)
- Zod (API Request Validation)
Database:
- PostgreSQL (Local Development)
- Neon DB (Production/Live)
DevOps:
- Docker & Coolify (Deployment)
Recommendation-Tracker/
├── assets/
│ └── demo.gif
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── hooks/ # Custom hooks (Auth, Recommendations)
│ │ ├── utils/ # Validation schemas
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── public/
│ └── package.json
│
├── server/
│ ├── db/
│ │ ├── db.js # Database connection
│ │ └── schema.sql # Database schema
│ ├── models/ # Database models
│ ├── routes/ # API routes
│ ├── middleware/ # Auth middleware
│ ├── utils/ # Helper functions
│ ├── uploads/ # Uploaded images (persistent storage)
│ └── index.js
│
└── README.md
Follow these instructions to run the project locally.
- Node.js (v18 or higher)
- PostgreSQL installed and running locally
git clone https://github.com/PratiAmalden/Recommendation-Tracker.git
cd Recommendation-TrackerCreate a PostgreSQL database named recommendations_db and run the schema script.
CREATE DATABASE recommendations_db;
-- Run the contents of server/db/schema.sql to create tablesNavigate to the server folder and install dependencies.
cd server
npm installCreate a .env file in the server directory:
PORT=3000
DB_USER=postgres
DB_PASSWORD=your_db_password
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=recommendations_db
JWT_SECRET_KEY=your_secret_key
JWT_RESET_SECRET=your_reset_secret
FRONTEND_URL=http://localhost:5173Start the server:
npm startOpen a new terminal, navigate to the frontend folder, and install dependencies.
cd frontend
npm installCreate a .env file in the frontend directory:
VITE_API_URL=http://localhost:3000Start the frontend:
npm run devVisit http://localhost:5173 in your browser.
This project was built with by:
- Fatma Arslantas - Full Stack Developer
- Prati Amalden - Full Stack Developer
- Aung Ye Kyaw - Full Stack Developer
- Yousof K. - Tech Lead
- Onder Altan - Product Manager
This project is part of the CodeYourFuture Full Stack course.