An extensive rapid transit system serving the city of Cairo Egypt. The project aims to provide an efficient and user-friendly application for managing and accessing information about the Cairo Metro.
This project is part of the Software Engineering course at the German International University under the supervision of Dr. Amr Desouky and Eng. Ayman Iskandar.
Click on the images to expand.
- Linear: for project management
- Figma: for UI/UX design
- Next.js: for the frontend
- Node.js: for the backend
- MongoDB: for the database
- Station Information: Provides detailed information about each station, including its location, lines it serves, and nearby landmarks.
- Route Planning: Allows users to plan their trips by selecting their starting and ending stations, and the app will provide them with the best route to take.
- Ticketing System: Facilitates the purchase and management of tickets, including options for single rides, daily passes, and monthly subscriptions.
- User Profiles: Allows users to create accounts and manage their information, including their tickets and payment methods.
- Admin Dashboard: Provides an interface for admins to manage the system, including adding new stations, managing tickets, and viewing statistics.
- Customer Support: Provides a way for users to contact customer support and report any issues they face with a real-time chat system.
To run the project locally, follow these steps:
- Clone the repository:
git clone https://github.com/skittlesaur/cairometro.git
- Install the dependencies:
cd cairometro
yarn install
- Set up the environment variables:
cp .env.example .env
Then, fill in the required variables in the .env
file.
- Run the development server:
yarn dev
Authentication Note:
The project requires hosts
file configuration to work properly. Add the following line to your hosts
file:
::1 cairometro
127.0.0.1 cairometro
::1 api.cairometro
127.0.0.1 api.cairometro
Run the frontend at http://cairometro:3000 and the backend at http://api.cairometro:1111.
The repository follows the following structure:
├── apps
│ ├── graphql
│ │ ├── prisma # Prisma schema and nexus types
│ │ └── src
│ │ ├── api # Public Express API
│ │ ├── lib # Utility functions
│ │ ├── notifications # Notification templates in mjml
│ │ ├── permissions # Permissions for the GraphQL API
│ │ ├── resolvers # GraphQL resolvers
│ │ │ ├── mutations
│ │ │ └── queries
│ │ ├── types # GraphQL types
│ │ └── utils # Utility functions
│ └── home
│ ├── components # React components
│ ├── context # React context
│ ├── graphql # GraphQL queries and mutations
│ ├── help # Help pages markdown files
│ ├── icons # SVG icons
│ ├── layouts # React layouts
│ ├── lib # Utility functions
│ ├── pages # Next.js pages
│ ├── public # Public assets
│ ├── styles # CSS styles
│ └── types # TypeScript types
Name | Role | GitHub |
---|---|---|
Baraa Ahmed | Team Leader, UI/UX, and Frontend Developer | @skittlesaur |
Omar Elbarbary | 3rd Party API Integrator and Backend Developer | @ElBarBary01 |
Youssef Saad | Localizations, Animations, and Full Stack Developer | @YoussefElbasha |
Youssef Khaled | Frontend 3rd Party API Integrator and Full Stack Developer | @sbayce |
Momen Yasser | QA Tester and Full Stack Developer | @thethirdsh |