A full-stack Android restaurant booking application where users can make reservations, receive confirmation emails and view booking confirmation.
📅 Booking Form – Collects user details and reservation preferences
✅ Validation – Ensures booking requests are valid before submission
📩 Email Confirmation – Sends users a confirmation email with a PDF voucher
🖼️ Booking Screen – Displays booking confirmation with details and booking number
🔄 Reset Flow – Users can return and make another booking
🧪 Full Test Coverage – Jest tests for backend logic and frontend components
Expo (React Native) – Android-only
React Navigation
Jest + @testing-library/react-native
Express.js
Nodemailer (for sending booking confirmation emails)
PDFKit / ReportLab (for voucher PDF generation)
Jest + Supertest for testing
booking-app/
├── backend/ # Express.js server
│ ├── routs/ # Routes, controllers, utils
| ├── libraries/ # Components and service manager
│ ├── __tests__/ # Backend tests (Jest + Supertest)
│ └── package.json
│
├── frontend/ # Expo React Native app (Android only)
│ ├── components/ # Components and services
│ ├── app/ # Booking form & confirmation screens
│ ├── __tests__/ # Frontend tests (Jest + RTL)
│ └── package.json
│
└── README.md # (this file)Node.js (LTS recommended)
npm or yarn
Expo CLI (npm install -g expo-cli)
Android device with Expo Go or Android emulator
cd backendnpm installCreate a .env file in /backend with at least:
- SERVER_URL= http://localhost:3001
- EMAIL_USER=your-email@example.com
- EMAIL_PASS=your-email-password-or-app-password
npm run devThe API will be available at: http://localhost:3001
cd frontendnpm installnpx expo startOn Android device: Open the Expo Go app, scan the QR code, and launch the app.
On Android emulator: Press a in the terminal to start in the emulator.
cd backend
npm testcd frontend
npm testAdd user accounts & login system
Admin dashboard for managing reservations
Push notifications for booking reminders
Multi-language support
(Future) iOS compatibility
Pull requests are welcome! For major changes, please open an issue first to discuss what you’d like to change.
Built by Nicole Niebel — independent developer passionate about robust, testable mobile apps and resilient backend APIs.
MIT License © 2025 Nicole Niebel