Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

CrowdCourier

CrowdCourier is a college-friendly peer-to-peer parcel delivery mobile app.

Tech Stack

  • Mobile app: Expo + React Native (no web dependency for core flow)
  • Backend API: FastAPI
  • Database: MongoDB
  • Auth: Register/Login with mobile + password
  • No payments, no GPS tracking, no paid deployment required

Folder Structure

  • frontend/app/index.tsx: Welcome screen and auth/role route guard
  • frontend/app/login.tsx: Login with mobile + password
  • frontend/app/register.tsx: Registration with name + email + mobile + password
  • frontend/app/role-select.tsx: Initial Sender/Courier choice
  • frontend/app/(tabs)/home.tsx: Sender trip search and Courier trip list
  • frontend/app/(tabs)/requests.tsx: Sender sent requests and Courier incoming requests
  • frontend/app/(tabs)/profile.tsx: Stats, role switch, logout
  • frontend/app/add-trip.tsx: Courier trip creation form
  • frontend/app/send-request/[id].tsx: Sender request form for selected trip
  • frontend/contexts/AuthContext.tsx: Token + user state
  • frontend/contexts/RoleContext.tsx: Sender/Courier mode state
  • frontend/utils/api.ts: API client methods
  • frontend/utils/theme.ts: Shared colors and spacing
  • backend/server.py: FastAPI routes and Mongo integration
  • backend/requirements.txt: Python dependencies

Backend Setup

  1. Go to backend.
  2. Ensure .env contains:
    • MONGO_URL=mongodb://localhost:27017
    • DB_NAME=crowdcourier
    • JWT_SECRET=any-strong-secret
  3. Install deps: pip install -r requirements.txt
  4. Run server: uvicorn server:app --reload --port 8000

Frontend Setup

  1. Go to frontend.
  2. Ensure .env contains:
    • EXPO_PUBLIC_BACKEND_URL=http://<your-local-ip>:8000 (for real device)
    • EXPO_PUBLIC_BACKEND_URL=http://localhost:8000 (for emulator/web preview)
  3. Install deps: yarn install
  4. Run app: yarn start
  5. Open on Android/iOS with Expo Go.

Auth Validation Rules

  • Mobile number: exactly 10 digits
  • Email: valid email format required
  • Password: minimum 6 characters and must include letters + numbers

Database Wipe Commands

Run from project root (c:\crowd_currier):

  1. Wipe only users:
@'
import os
from pathlib import Path
from dotenv import load_dotenv
from pymongo import MongoClient

load_dotenv(Path("backend/.env"))
client = MongoClient(os.getenv("MONGO_URL", "mongodb://localhost:27017"))
db = client[os.getenv("DB_NAME", "crowdcourier")]
print("Deleted users:", db.users.delete_many({}).deleted_count)
'@ | python -
  1. Wipe only trips:
@'
import os
from pathlib import Path
from dotenv import load_dotenv
from pymongo import MongoClient

load_dotenv(Path("backend/.env"))
client = MongoClient(os.getenv("MONGO_URL", "mongodb://localhost:27017"))
db = client[os.getenv("DB_NAME", "crowdcourier")]
print("Deleted trips:", db.trips.delete_many({}).deleted_count)
'@ | python -
  1. Wipe only delivery_requests:
@'
import os
from pathlib import Path
from dotenv import load_dotenv
from pymongo import MongoClient

load_dotenv(Path("backend/.env"))
client = MongoClient(os.getenv("MONGO_URL", "mongodb://localhost:27017"))
db = client[os.getenv("DB_NAME", "crowdcourier")]
print("Deleted delivery_requests:", db.delivery_requests.delete_many({}).deleted_count)
'@ | python -
  1. Wipe all (users + trips + delivery_requests) together:
@'
import os
from pathlib import Path
from dotenv import load_dotenv
from pymongo import MongoClient

load_dotenv(Path("backend/.env"))
client = MongoClient(os.getenv("MONGO_URL", "mongodb://localhost:27017"))
db = client[os.getenv("DB_NAME", "crowdcourier")]
print("Deleted users:", db.users.delete_many({}).deleted_count)
print("Deleted trips:", db.trips.delete_many({}).deleted_count)
print("Deleted delivery_requests:", db.delivery_requests.delete_many({}).deleted_count)
'@ | python -

About

CrowdCourier is an Expo-based mobile app that connects Senders with traveling Couriers for peer-to-peer parcel delivery, using MongoDB for data storage and simulated OTP authentication for testing.

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages