/cairometro

Cairo Metro System

Primary LanguageTypeScript

Cairo Metro Logo

Cairo Metro

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.

Screenshots

Click on the images to expand.

Landing Page Subscriptions Page Help Page Example Ticket Details Login Page Admin Panel

Tools & Technologies

Features

  • 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.

Installation and Usage

To run the project locally, follow these steps:

  1. Clone the repository:
git clone https://github.com/skittlesaur/cairometro.git
  1. Install the dependencies:
cd cairometro
yarn install
  1. Set up the environment variables:
cp .env.example .env

Then, fill in the required variables in the .env file.

  1. 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.

Repository Structure

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

Meet the Team

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