Current link: https://restaurant-website-7ss5.onrender.com/
The application was previously deployed on a server at https://10.120.32.85/revontulet/. (The website is deployed at university server ,use Metropolia vpn to get access to it"
Full stack project
Frontend: HTML / CSS / JavaScript
Backend: Python (Flask) + MongoDB
- Irum Shehryar
- Kanwaljit Singh
- Farhan Ashraf
- Saba Akbar
A restaurant website inspired by the Northern Lights (βRevontuletβ), with a warm βflamehouseβ vibe. Users can browse the menu, add items to a cart, and place orders; admins manage menu items, reservations, users, and orders.
Fast food Lovers
-
Team roles
- Irum Shehryar: End-to-end menu flow (frontend β backend), admin dashboard/menu management, admin auth, base layout, customer dashboard, deployment, Lighthouse/performance, HTML/CSS validation, JSDoc/ApiDoc, validation.
- Kanwaljit Singh: Cart + order flow (frontend β backend), customer login/registration, session management, language translations, UI enhancements.
- Farhan Ashraf: Reservation flow (frontend β backend), About/Contact design, admin reservation + order management documentation.
- Saba Akbar: CSS styling, feedback form, menu theme/selection, menu modal enhancements, image curation, MongoDB data insertion.
-
Accomplished
- Live deployment,
- JSDoc + ApiDoc generated,
- Validation evidence captured;
- Full flows for menu, cart/checkout, reservations,User,
- Full admin CRUD operations,
- login/registration,
- Todayβs menu highlighting,
- Allergens and dietary flags,
- Language Translations fi/en
-
Problems faced
- Keeping language dictionaries current across pages was tedious;
- Metropolia deployment was tricky;
- aligning auth/session checks for protected routes needed care.
-
Lessons learned
- Better Git workflow,
- deployment know-how,
- code reuse patterns (shared services/components) saved time and bugs.
-
AI disclosure (GitHub Copilot)
- Used for comments, we use AI to help write clear comments and description in our code.This make the code easier to understand for everyone on the team.
- debugging, when we get stuck on a bug, we ask AI for ideas on what might be wrong.
- learning when stuck.
- Avoid over-relying: ask it what could be wrong before letting it change code; keep review in the loop.
-
Future enhancements
- Complete user management;
- sorting/filtering in admin panels (pending/confirmed/etc.);
- real-time notifications for new orders/reservations;
- improved user dashboard layout; richer API integrations.
- Search bar
- Secure Payment integration
- Right now our website is slow because the pictures we uploaded are of high quality so website is taking the time to load,we aim to do On-page SEO for it which comes later after the websites completion. we didnt got time for it but we will do it in future.
- Clone
git clone https://github.com/IrumShehryar/Restaurant-Website.git
cd Restaurant-Website- Create & activate venv
- Windows:
python -m venv .venv
.\.venv\Scripts\activate- macOS/Linux:
python3 -m venv .venv
source .venv/bin/activate- Install deps
python -m pip install --upgrade pip
pip install -r requirements.txt- Set env vars (via
.envor shell)
MONGODB_URIJWT_SECRET_KEY
- Run Flask app
python -m backend.app- Access the app Use the server URL (VPN required): https://10.120.32.85/revontulet/
Generate HTML docs for backend code:
pdoc backend/app.py -o docs/pdocOpen the generated HTML files in docs/pdoc/ in your browser.
Generate docs for JS files:
npx jsdoc frontend/static/js -r -d docs/jsdocOpen the generated HTML files in docs/jsdoc/ in your browser.
- See
backend/apidoc.json(static JSON, not interactive)
- Run the backend as above.
- Serve frontend files with a static server or from Flask if desired
Deployment Steps:
- Access the server (requires credentials)
- Clone/pull the latest code to the server
- Set up environment variables:
- Create a
.envfile with:MONGODB_URI(production MongoDB connection)JWT_SECRET_KEY(secure key)FLASK_ENV=production
- Create a
- Install/update dependencies:
pip install -r requirements.txt
- Run with a production WSGI server (e.g., Gunicorn):
gunicorn -w 4 -b 0.0.0.0:5000 backend.app:app
- Configure reverse proxy (Nginx/Apache) to:
- Serve static files efficiently
- Forward API requests to the Flask app
- Handle SSL/TLS certificates
Follow these steps to test all functionalities of the Revontulet Flamehouse website:
- Go to the Login/Register page
- Create a new account with email and password
- Log in with your credentials
- Verify that you're redirected to the menu or dashboard
- Navigate to the Menu page
- Verify all menu items are displayed with images, names, prices, and categories
- Check that items are organized by category (Starter, Main, Dessert, Side, Drink)
- Click on an item to see details in a modal
- Add items to cart from the menu
- Go to Cart page
- Verify items are listed with quantities and prices
- Change item quantities and verify the total updates
- Remove items and verify cart updates
- Proceed to checkout
- From the cart, proceed to checkout
- Fill in delivery details
- Submit the order
- You should see an Order Confirmation page with order number and details
- Check that email confirmation is sent
- Go to the Reservation page
- Select a date and time
- Enter number of guests
- Submit the reservation
- Verify confirmation message appears
- Log in as a customer
- Access your Profile/Dashboard
- Check your past orders and reservations with status
- Log in with admin credentials(via the admin login link at the bottom of page)
- Access Admin Dashboard
- Test the following:
- Menu Management: Add, edit, delete menu items
- Order Management: View all orders, update status
- Reservation Management: Add, edit,delete ,confirm, or cancel reservations
- User Management: View and manage user accounts
- Navigate to About Us to read restaurant information
- Go to Contact Us and submit a message
- Verify form validation works
- Test the website on different screen sizes (mobile, tablet, desktop)
- Verify all pages are responsive and functional on mobile devices
- Switch between English and Finnish
- Verify all text updates correctly
Restaurant-Website/ ββ backend/ β ββ app.py # Flask backend β ββ apidoc.json # API documentation β ββ api/ # API modules (v1, utils, etc.) ββ frontend/ β ββ templates/ β β ββ index.html # Home page β β ββ menu.html # Menu page β β ββ about.html # About Us β β ββ contact.html # Contact Us β β ββ cart.html # Cart β β ββ reservation.html # Reservation β β ββ order-confirmation.html # Order Confirmation β β ββ admin-interface.html # Admin dashboard β β ββ admin-menu.html # Admin menu management β β ββ admin-orders.html # Admin order management β β ββ admin-reservations.html # Admin reservation management β β ββ admin-users.html # Admin user management β β ββ ... β ββ static/ β ββ css/ β β ββ main.css β β ββ menu.css β β ββ cart.css β β ββ reservation.css β β ββ order-confirmation.css β β ββ ... β ββ js/ β β ββ menu.js β β ββ cart.js β β ββ reservation.js β β ββ order-confirmation.js β β ββ ... β ββ assets/ β ββ revontulet_logo.png ββ requirements.txt ββ README.md ββ .gitignore
Lighthouse accessibility and best practices scores for all main pages (as of Dec 2025):
| Page | Accessibility | Best Practices |
|---|---|---|
| Home | 13/14 | 5/5 |
| Menu | 19/19 | 5/5 |
| About Us | 13/13 | 5/5 |
| Contact Us | 13/14 | 5/5 |
| Cart | 14/15 | 5/5 |
| Order Confirmation | 13/15 | 5/5 |
| Reservation | 14/15 | 5/5 |
| Admin Menu | 20/21 | 5/5 |
Screenshots of all Lighthouse reports are available in the project documentation folder or upon request.
All main pages and CSS files are validated using the W3C HTML Validator, CSS Validator, and the VS Code CSS validation extension. Validation screenshots and reports are included in the documentation/validation/ folder.
Validation Evidence:
- See
documentation/validation/for screenshots of:- HTML validation results for all main pages
- CSS validation results for all main stylesheets (e.g.,
main.css,admin-interface.css, etc.)
Each screenshot is named after the corresponding page or stylesheet for easy reference.
- API documentation: see
backend/apidoc.json - User and admin guides, validation evidence, and extra screenshots: see
documentation/
Irum Shehryar ,Kanwaljit Singh ,Farhan Ashraf ,Saba Akbar