Skip to content

Commit ae9bd9e

Browse files
committed
first ver of readme
1 parent dd3a7d2 commit ae9bd9e

File tree

2 files changed

+115
-75
lines changed

2 files changed

+115
-75
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -75,78 +75,3 @@ jobs:
7575
tags: ${{ steps.meta.outputs.tags }}
7676
labels: ${{ steps.meta.outputs.labels }}
7777

78-
# ---------------------------------------------------------
79-
# DEPLOY STAGE
80-
# ---------------------------------------------------------
81-
deploy-backend:
82-
needs: build-backend
83-
runs-on: ubuntu-latest
84-
if: github.ref == 'refs/heads/main'
85-
86-
steps:
87-
- name: Deploy to EC2
88-
env:
89-
EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }}
90-
EC2_HOST: ${{ secrets.EC2_HOST }}
91-
EC2_USER: ${{ secrets.EC2_USER }}
92-
GH_PAT: ${{ secrets.GH_PAT }} # Personal Access Token for git clone on EC2
93-
GITHUB_ACTOR: ${{ github.actor }}
94-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For docker login
95-
IMAGE_TAG: sha-${{ github.sha }}
96-
run: |
97-
# Setup SSH
98-
mkdir -p ~/.ssh
99-
echo "$EC2_SSH_KEY" > ~/.ssh/id_rsa
100-
chmod 600 ~/.ssh/id_rsa
101-
ssh-keyscan -H "$EC2_HOST" >> ~/.ssh/known_hosts
102-
103-
# Execute remote commands
104-
ssh -i ~/.ssh/id_rsa "$EC2_USER@$EC2_HOST" "bash -s" <<EOF
105-
set -e
106-
107-
# Variables
108-
PROJ_DIR="/home/ec2-user/project_team_2"
109-
BACKEND_DIR="\${PROJ_DIR}/Project/src/backend"
110-
# Note: You need to update this URL to your GitHub repository URL
111-
GIT_URL="https://${GITHUB_ACTOR}:${GH_PAT}@github.com/${{ github.repository }}.git"
112-
113-
echo "=== specific setup for git safe directory ==="
114-
git config --global --add safe.directory "\$PROJ_DIR"
115-
116-
if [ ! -d "\$PROJ_DIR/.git" ]; then
117-
echo "=== Cloning repository ==="
118-
git clone "\$GIT_URL" "\$PROJ_DIR"
119-
else
120-
echo "=== Updating repository ==="
121-
cd "\$PROJ_DIR"
122-
git remote set-url origin "\$GIT_URL"
123-
git fetch origin
124-
git checkout main
125-
git pull origin main
126-
fi
127-
128-
cd "\$BACKEND_DIR"
129-
130-
echo "=== Logging into GitHub Container Registry ==="
131-
# We use the PAT or Token passed via env vars in the SSH session if possible,
132-
# but usually, standard docker login works best with a PAT for GHCR on remote hosts.
133-
# Here we pass the short-lived GITHUB_TOKEN from the runner which might expire,
134-
# so using a long-lived PAT (GH_PAT) is safer for the registry password too if the token expires.
135-
# However, for immediate pull, the GITHUB_TOKEN works.
136-
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
137-
138-
echo "=== Pulling new image ==="
139-
# Convert image name to lowercase just in case, though usually handled by metadata action
140-
FULL_IMAGE_NAME="ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')/wisp-backend"
141-
SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)
142-
143-
docker pull "\$FULL_IMAGE_NAME:sha-\$SHORT_SHA"
144-
145-
echo "=== Restarting Services ==="
146-
# Map the GHCR image to the one docker-compose expects or override it
147-
# Assuming docker-compose.yml uses an environment variable or fixed name
148-
# We enforce the image we just built:
149-
BACKEND_IMAGE="\$FULL_IMAGE_NAME:sha-\$SHORT_SHA" docker-compose up -d --force-recreate --no-build
150-
151-
echo "=== Deployment Complete ==="
152-
EOF

README.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
# Wisp: AI-Powered Voice-First Idea Capture System 🎙️✨
2+
3+
**"Capture fleeting thoughts before they vanish"**
4+
5+
<div align="center">
6+
<img src="Project/src/frontend/assets/images/wisp_logo.png" alt="Wisp Logo" width="180"/>
7+
<br/>
8+
<br/>
9+
<a href="Project/docs/charter.md">Project Charter</a> •
10+
<a href="Project/docs/user_manual.md">User Manual</a> •
11+
<a href="Project/docs/dev_setup.md">Developer Setup</a> •
12+
<a href="Project/docs/test_report.md">Test Report</a>
13+
</div>
14+
15+
---
16+
17+
## 🎓 About This Project
18+
19+
This repository hosts the source code for **Wisp**, our final group project for **SE 101** in the **Software Engineering** program at the **University of Waterloo**.
20+
21+
Originally developed on GitLab, we have ported it to GitHub to share our work with the community. Wisp was designed to eliminate the friction of capturing ideas on mobile devices by leveraging voice-first interaction and advanced AI agents.
22+
23+
## 🚀 Overview
24+
25+
Wisp is a mobile-first application that enables users to capture, refine, and organize ideas in under 5 seconds using only their voice. Unlike traditional voice recorders, Wisp uses **Real-time AI** to transcribe speech and intelligently parse it into structured tasks—automatically extracting titles, priorities, deadlines, and context—before syncing them directly to your productivity tools (like Notion).
26+
27+
### Key Features
28+
29+
* **⚡ Instant Voice Capture:** Launch and record in under 2 seconds.
30+
* **🗣️ Real-time Transcription:** See your words appear instantly as you speak via WebSocket streaming.
31+
* **🧠 AI-Powered Parsing:** Automatically converts "Remind me to call Mom tomorrow" into a structured task:
32+
* *Title:* Call Mom
33+
* *Deadline:* Tomorrow, 9:00 AM
34+
* *Priority:* Medium
35+
* **🔄 Multi-Interpretation:** If your intent is ambiguous, the AI generates multiple confidence-weighted interpretations for you to choose from.
36+
* **🔗 Notion Integration:** Seamlessly syncs parsed Wisps to your Notion databases using the Model Context Protocol (MCP).
37+
* **📱 Modern Mobile UI:** Built with React Native, Expo, and NativeWind for a polished iOS/Android experience.
38+
39+
## 📸 Screenshots
40+
41+
| Dashboard | Voice Capture |
42+
|:---:|:---:|
43+
| <img src="Project/docs/Images/2.png" width="300" /> | <img src="Project/docs/Images/3.png" width="300" /> |
44+
45+
| **Review & Refine** | **Notion Integration** |
46+
|:---:|:---:|
47+
| <img src="Project/docs/Images/6.png" width="300" /> | <img src="Project/docs/Images/7.png" width="300" /> |
48+
49+
## 🛠️ Tech Stack
50+
51+
### Mobile Client
52+
* **Framework:** React Native (Expo SDK 52)
53+
* **Styling:** NativeWind (Tailwind CSS)
54+
* **Audio:** Expo Audio / WebSocket Streaming
55+
* **State:** React Context / Hooks
56+
57+
### Backend API
58+
* **Framework:** FastAPI (Python 3.11+)
59+
* **AI Service:** OpenAI Realtime API / Google Gemini Live
60+
* **Database:** Supabase (PostgreSQL)
61+
* **Integration:** Model Context Protocol (MCP) SDK
62+
63+
## 🏗️ Architecture
64+
65+
Wisp follows a modern service-oriented architecture:
66+
67+
1. **Mobile Client:** Handles audio recording, chunking, and real-time UI updates.
68+
2. **Backend Gateway:** A FastAPI server that orchestrates WebSocket streams and manages state.
69+
3. **AI Service Layer:** Processes raw audio into transcripts and structured JSON objects.
70+
4. **MCP Layer:** Acts as a bridge to external productivity platforms (Notion, Jira, etc.).
71+
72+
For a deep dive into the system design, check out our [Domain Model](Project/docs/domain_model.md) and [Architecture Docs](Project/docs/charter.md).
73+
74+
## 🏃‍♂️ Getting Started
75+
76+
To run Wisp locally, please follow the detailed [Developer Setup Guide](Project/docs/dev_setup.md).
77+
78+
### Quick Summary
79+
80+
**1. Backend Setup**
81+
```bash
82+
cd Project/src/backend
83+
cp .env.example .env
84+
# Add your OPENAI_API_KEY and SUPABASE credentials
85+
docker-compose up -d
86+
```
87+
88+
**2. Frontend Setup**
89+
```bash
90+
cd Project/src/frontend
91+
bun install
92+
bun start
93+
# Scan the QR code with Expo Go on your phone
94+
```
95+
96+
## 📄 Documentation
97+
98+
We have included extensive documentation from our development process in the `Project/docs/` directory:
99+
100+
* **[Project Charter](Project/docs/charter.md):** Vision, goals, and scope.
101+
* **[User Manual](Project/docs/user_manual.md):** Detailed guide on how to use the app.
102+
* **[Test Plan & Report](Project/docs/test_report.md):** Details on our testing strategy (achieving >70% backend coverage).
103+
* **[Sprint Retrospectives](Project/docs/sprint_retrospectives.md):** A log of our agile development cycle.
104+
105+
## 👥 The Team
106+
107+
**University of Waterloo - SE 101 - Team 2**
108+
109+
* **William Yang:** @Tankman61
110+
* **Kai Zhang:** @Scr4tch587
111+
* **Arjun Virk:** @virkvarjun
112+
* **John Petruzziello:** @john-jpet
113+
* **Gordon Zeng:** @pasward
114+
115+
---

0 commit comments

Comments
 (0)