Skip to content

bisquitew/Parkie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

101 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ITfest 2026 UniHackers

πŸ…ΏοΈ Parkie

AI-Powered Smart Parking Β· Real-Time Availability Β· Zero Guesswork

πŸ† Winner: Community Problem Track Award @ ITfest 2026! πŸ†

Community Problem Track Award Diploma

Find a parking spot before you even get there.


✨ What is Parkie?

Parkie uses computer vision to detect cars in parking lots from live camera feeds and shows real-time availability on a mobile map β€” so drivers can find open spots instantly, without circling the block.

πŸ“· Camera  β†’  πŸ€– AI Vision (YOLOv11)  β†’  ⚑ Backend API  β†’  πŸ“± Mobile App
                                                          β†’  πŸ–₯️  Dashboard

How it works

  1. Lot owners register their parking lots on the web dashboard and define parking slot polygons by clicking on a camera frame
  2. AI Vision Agent runs YOLO inference on the camera feed, detects which slots are occupied, and reports to the backend
  3. Drivers open the mobile app, see a live map with color-coded pins (🟒 green / 🟑 yellow / πŸ”΄ red), and navigate to the best spot
  4. Updates flow in real-time via Supabase Realtime β€” no refreshing needed

πŸ“Έ Showcase

πŸ“± Mobile App in Action

Parkie Mobile App Demo

πŸ–ΌοΈ Screenshots

Admin Dashboard Polygon Editor Model Vision


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        PARKIE SYSTEM                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  πŸ“· Camera   β”‚  πŸ€– AI Vision    β”‚  ⚑ Backend API (FastAPI)      β”‚
β”‚  Feed/RTSP   β”‚  YOLOv11 + CV2   β”‚  REST Β· Supabase Β· bcrypt     β”‚
β”‚              β”‚                  β”‚                                β”‚
β”‚              β”‚  Inference: 5s   β”‚  13 endpoints                  β”‚
β”‚              β”‚  Reporting: 15s  β”‚  Verification workflow         β”‚
β”‚              β”‚  Smoothing: 5x   β”‚  Frame capture (OpenCV)        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                     πŸ—„οΈ Supabase (PostgreSQL)                     β”‚
β”‚              Tables: users Β· parking_lots                        β”‚
β”‚              Realtime: WebSocket push on UPDATE                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  πŸ“± Mobile App               β”‚  πŸ–₯️  Web Dashboard                β”‚
β”‚  Expo Β· React Native Β· Maps  β”‚  Vite Β· TypeScript Β· Canvas       β”‚
β”‚  Live pins Β· Navigation      β”‚  Lot CRUD Β· Slot polygon editor   β”‚
β”‚  Nearby search (Nominatim)   β”‚  Camera frame capture             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‚ Project Structure

unihackers/
β”œβ”€β”€ backend_api/          # FastAPI REST API
β”‚   β”œβ”€β”€ main.py           # App + all endpoints
β”‚   β”œβ”€β”€ admin_verify.py   # CLI tool for lot verification
β”‚   β”œβ”€β”€ docs.md           # API documentation
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ ai_vision/            # Computer vision pipeline
β”‚   β”œβ”€β”€ vision_agent.py   # Production agent (headless)
β”‚   β”œβ”€β”€ smart_parking.py  # Local viewer with GUI
β”‚   β”œβ”€β”€ select_slots.py   # Interactive slot polygon selector
β”‚   β”œβ”€β”€ train_pklot.py    # PKLot dataset training script
β”‚   └── requirements.txt
β”‚
└── Frontend/
    β”œβ”€β”€ Parkie/           # Mobile app (Expo / React Native)
    β”‚   β”œβ”€β”€ screens/      # HomeScreen
    β”‚   β”œβ”€β”€ components/   # GoogleMaps, NearbySearch, ParkingCard...
    β”‚   β”œβ”€β”€ lib/          # API service, Supabase client, data transforms
    β”‚   └── theme/        # Design tokens (dark amethyst theme)
    β”‚
    └── Dashboard/        # Web dashboard (Vite / TypeScript)
        └── src/
            β”œβ”€β”€ main.ts   # SPA: auth, lots, canvas slot editor
            β”œβ”€β”€ api.ts    # API client
            └── style.css # Styling

πŸš€ Quick Start

Prerequisites

  • Python 3.10+ with pip
  • Node.js 18+ with npm
  • Supabase project (supabase.com)
  • ngrok (for tunneling the backend)

1. Backend API

cd backend_api
pip install -r requirements.txt

Create a .env file:

SUPABASE_URL=[https://your-project.supabase.co](https://your-project.supabase.co)
SUPABASE_SERVICE_KEY=your-service-role-key

Start the server:

uvicorn main:app --reload --port 8000

πŸ“– Swagger docs available at http://localhost:8000/docs

2. AI Vision Agent

cd ai_vision
pip install -r requirements.txt

Create a .env file:

BACKEND_URL=http://localhost:8000
LOT_ID=your-lot-uuid

Run the agent:

# Production (headless, reports to backend)
python vision_agent.py --video assets/demo_video.mp4

# With debug GUI
python vision_agent.py --video assets/demo_video.mp4 --debug

# Define parking slots first (interactive)
python select_slots.py --video assets/demo_video.mp4

3. Mobile App (Parkie)

cd Frontend/Parkie
npm install
npx expo start

Update config/api.js with your backend URL (ngrok or local).

4. Web Dashboard

cd Frontend/Dashboard
npm install
npm run dev

Update VITE_API_BASE_URL in .env or the fallback in src/api.ts.


πŸ“‘ API Endpoints

Method Endpoint Description
POST /register Create a lot owner account
POST /login Authenticate and get user profile
GET /lots All verified lots (mobile app)
GET /lots/colors Lightweight color-only updates
GET /lots/{id} Single lot details
GET /lots/{id}/config Camera URL + slot polygons (AI agent)
GET /my_lots/{owner_id} Owner's lots (dashboard)
POST /lots Register a new parking lot
POST /lots/{id}/setup Save slot polygon configuration
POST /update_lot Update occupancy (AI agent β†’ backend)
POST /capture_frame Grab a camera frame as base64
PATCH /lots/{id}/verify Admin: verify/reject a lot

πŸ—„οΈ Database Schema

users

Column Type Notes
id uuid Primary key
name text
email text Unique
password text bcrypt hashed
created_at timestamptz

parking_lots

Column Type Notes
id uuid Primary key
owner_id uuid FK β†’ users.id
name text
latitude float8
longitude float8
camera_url text RTSP/HTTP stream URL
slots_data jsonb Array of 8-coord polygon vectors
capacity int Total slots
available_spots int Currently free
status_color text green / yellow / red / gray
is_verified boolean Admin approval flag
last_updated timestamptz Last AI scan time

πŸ€– AI Detection Pipeline

The vision agent uses a multi-step approach for robust parking detection:

  1. YOLO Inference β€” YOLOv11m detects vehicles (car, motorcycle, bus, truck, bicycle)
  2. Polygon Matching β€” 10-point sampling checks if a vehicle overlaps a slot polygon
  3. Large Vehicle Filter β€” Detections > 12% of frame area are ignored (passing buses/trucks)
  4. Occupancy Smoothing β€” 5-frame sliding window with majority vote prevents flicker
  5. Backend Reporting β€” Stable occupancy posted every 15 seconds

🎨 Design System

The mobile app uses a premium dark amethyst theme:

Token Value Usage
Background #0a0a0a Main screen
Primary #8d23be CTAs, active elements
Surface #401056 Cards, glass panels
Status Green #10b981 < 70% occupied
Status Yellow #f59e0b 70–85% occupied
Status Red #ef4444 > 85% occupied

Glassmorphism with rgba(64, 16, 86, 0.4) backgrounds and violet borders throughout.


πŸ‘₯ Team UniHackers

Built with β˜• and 🍜 at ITfest 2026 Hackathon. :3


Made for ITfest 2026 Β· TimiΘ™oara, Romania πŸ‡·πŸ‡΄

About

Parkie is an AI-powered smart parking solution designed to eliminate the guesswork of finding a parking spot by providing real-time availability updates.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors