Hack NC State x Code Black — Preserving Black Culture Track
Remembrall is an assistive desktop application designed to support individuals who may struggle with memory or daily independence — inspired by the magical object from Harry Potter that reminds you when you've forgotten something. The app combines face recognition, location tracking, AI-powered activity logging, and emergency contact features into a single heads-up display (HUD) built with PyQt5.
- Features
- Architecture
- Tech Stack
- Setup & Installation
- Usage
- API
- Project Structure
- Hackathon Progress
| Feature | Description |
|---|---|
| User Sign-up | Registers a user with personal details (name, age, gender, contact, home location, emergency contact, race/ethnicity) and stores them in the backend API. |
| Face Recognition | Uses OpenCV and a Haar Cascade classifier to detect and recognize the user's face via a live camera feed. |
| Location Tracking | Retrieves the user's current GPS coordinates (via IP geolocation), calculates the distance to their registered home address, and renders both points on an interactive Folium map saved as footprint.html. |
| Location Display | Shows a static location map image inside a PyQt5 widget. |
| AI Activity Log | Records 30 seconds of audio, transcribes it using OpenAI Whisper, and generates a keyword + summary with GPT-3.5-turbo. Each log entry is time-stamped and stored in the user's profile via the REST API. |
| Task Board | Fetches the user's activity log from the API and displays it as a scrollable, checkable task list with the current date and time. |
| SOS / Emergency Panel | Provides one-tap buttons to call the user's caretaker, trigger an SOS alert, or return home. |
| Community Ticker | A draggable, semi-transparent text-input widget that keeps a scrollable history log of entered notes. |
┌─────────────────────────────────────────────────────┐
│ PyQt5 Desktop App │
│ │
│ start.py ──► signup.py (User Registration) │
│ └──► testcam.py (Face Recognition) │
│ taskdate.py (Task Board / HUD) │
│ soscall.py (SOS / Emergency) │
│ community.py (Community Ticker) │
│ locationdisplay.py (Map Display) │
└───────────────────────┬─────────────────────────────┘
│ HTTP (requests)
▼
┌───────────────────────────────┐
│ Django REST API (Heroku) │
│ remembrall-cd7db0135b38 │
│ .herokuapp.com │
└───────────────────────────────┘
▲
│
┌───────────────┴───────────────┐
│ log_summarizer/ │
│ recordAudio → Whisper STT │
│ → GPT-3.5 summarize → API │
└───────────────────────────────┘
Frontend / Desktop
- Python 3
- PyQt5 — GUI framework
- OpenCV (
cv2) — Camera capture & face detection - Folium — Interactive maps rendered as HTML
AI / ML
- OpenAI Whisper (
whisper-1) — Audio transcription - OpenAI GPT-3.5-turbo-instruct — Activity log summarization
- OpenCV Haar Cascade — Face detection (
haarcascade_frontalface_default.xml)
Location
Backend
- Django 3.2 + Django REST Framework
- Deployed on Heroku
- SQLite (development) / Heroku Postgres (production)
Audio
- PyAudio — Microphone recording
- Python 3.8+
- An OpenAI API key
git clone https://github.com/akulka404/hack-ncstate.git
cd hack-ncstatepip install PyQt5 opencv-python folium geocoder geopy requests pyaudio openai pytzThe log summarizer reads the API key from log_summarizer/api.py. Create or update that file:
# log_summarizer/api.py
def api():
return "YOUR_OPENAI_API_KEY"cd remembrall
pip install -r requirements.txt
python manage.py migrate
python manage.py runserverpython start.pyThis opens the Remembrall start screen with Login and Sign-up options.
Click Sign-up to open the registration form. Fill in all fields and click Sign-up User. This will:
- POST the user data to the backend API.
- Kick off face-recognition training (
train.py) for the new user.
cd log_summarizer
python main.py <username>This will:
- Record 30 seconds of audio from the microphone.
- Transcribe the audio with OpenAI Whisper.
- Summarize the transcript with GPT-3.5 and append a time-stamped entry to the user's log in the API.
python taskdate.pyDisplays the user's logged activities as a scrollable, semi-transparent HUD with checkboxes.
python location.pyGenerates footprint.html showing current location vs. home address on an interactive map.
The REST API is deployed at:
https://remembrall-cd7db0135b38.herokuapp.com
| Endpoint | Method | Description |
|---|---|---|
/user/ |
POST | Create a new user |
/user/<username>/ |
GET | Retrieve a user's data |
/user/<username>/update |
PUT | Update a user's log |
/admin |
GET | Django admin panel |
hack-ncstate/
├── start.py # App entry point (Login / Sign-up screen)
├── start.ui # Qt Designer UI file for start screen
├── signup.py # User registration form
├── signup.ui # Qt Designer UI file for sign-up
├── taskdate.py # Task board / HUD widget
├── taskdate.ui # Qt Designer UI file for task board
├── soscall.py # SOS / emergency contact panel
├── soscall.ui # Qt Designer UI file for SOS panel
├── community.py # Draggable community text-ticker widget
├── testcam.py # Live camera feed with face detection
├── location.py # GPS location tracking & map generation
├── locationdisplay.py # Static map image display widget
├── locationdisplay.ui # Qt Designer UI file for location display
├── footprint.html # Generated Folium map (current ↔ home)
├── location.png # Static location map image
├── haarcascade_frontalface_default.xml # OpenCV face detector model
├── log_summarizer/
│ ├── main.py # Entry point: record → transcribe → log
│ ├── recordAudio.py # PyAudio microphone recorder (30 s)
│ ├── transcribe.py # OpenAI Whisper transcription
│ ├── summarize.py # GPT-3.5 keyword + summary generation
│ ├── logger.py # Fetches user log, appends entry, PUTs back
│ ├── api.py # Returns the OpenAI API key
│ ├── transcription.txt # Latest transcription output
│ └── output.wav # Latest recorded audio
└── remembrall/ # Django backend
├── manage.py
├── requirements.txt
├── Procfile # Heroku process file
├── runtime.txt # Python runtime for Heroku
├── remembrall/ # Django project settings
└── user/ # Django app: User model & REST endpoints
Track: Preserving Black Culture
- API Development
- API Deployment (Heroku)
- Face Recognition
- Log Generator (Audio → Whisper → GPT-3.5 → API)
- Heads-up Display (all components complete)
- Presentation
- Video