Skip to content

Latest commit

 

History

History
79 lines (64 loc) · 2.34 KB

README.md

File metadata and controls

79 lines (64 loc) · 2.34 KB

POOLPAL

PoolPal Web Application API

Overview

This project is a carpooling web application API that enables users to share rides, find available rides, and manage bookings. The application is built with a Python Flask using MongoPy for database interactions and JWT for authentication

Features

  • User registration and authentication
  • User profile management
  • Create, search, and manage rides
  • Book and cancel ride bookings
  • Notifications system
  • Rating and feedback for rides

Tech Stack

PoolPal

Backend

  • Python Flask
  • MongoPy/ MongoEngine
  • JWT for authentication - flask

Third party services

  • Google distance matrix api
  • Mailjar API

DevOps

  • AWS EC2 - linux server
  • Gunicorn
  • Nginx

Installation

  1. Clone the repository:
git clone https://github.com/aleksifuna/PoolPal.git
cd PoolPal
  1. Create and activate a virtual Environment:
python3 -m venv venv
source venv/bin/activate
  1. Install the required packages:
pip install -r requirements.txt
  1. Install and configure MongoDB
sudo service mongod start
  • (Optional) Use mongo shell or a GUI like MongoDB Compass to create a database for the application.
  1. Set up environment variables for Flask and database configutation in a .env file
  2. Run the application:
python -m api.v1.app

API Endpoints

Here are some key endpoints of the PoolPal API:

  • User Registration: POST /api/register
  • User Login: POST /api/login
  • Create a Ride: POST /api/rides
  • Search Rides: GET /api/rides
  • Book a Ride: POST /api/rides/{ride_id}/book
  • Cancel Booking: DELETE /api/rides/{ride_id}/book
  • Get Notifications: GET /api/notifications
  • Leave Feedback: POST /api/rides/{ride_id}/feedback
  • For a complete list of endpoints and to test them, please visit our Swagger API Documentation

Contributing

If you would like to contribute to this project, please fork the repository and submit a pull request. We welcome all contributions.