Project Info
Inspiration
We live in an epidemic of burnout and disconnection and the online world effectively fills this gap with instant gratification through the dopamine of scrolling and easy rewards; our vision was to leverage these patterns to Do Good. Through trackable acts of kindness, productivity, and self-growth, DoGood guides users in building purpose while creating a tangible, real-world interest.
What it does
DoGood will present opportunities for social good and self-improvement through four pages that have tasks that require photo verification: Serve: The first tab, Serve, connects you with ways to give back. You can find local volunteer opportunities, community service projects, or even respond to crisis-assistance alerts. There’s also an environmental mini-game that turns recycling and trash pickup into friendly local competitions where you log what you clean, earn XP, and see your positive impact grow. Be Productive: The Be Productive tab helps you make good use of your time. You can set focus timers for tasks, and the app sends gentle notifications to keep you accountable. It also uses smart tracking to remind you of activities you haven’t done in a while, like that personal project you left half-finished, or that hobby you love but forgot. Completing tasks or having a productive work session with the timer can also earn XP. Self-improve: The Self-Improve tab remembers your progress and gives personalized suggestions to earn XP, maybe journaling today, maybe reconnecting with an old friend. Over time, it becomes your personal coach for growth, mindfulness, and relationships. Shop: Finally, all this effort pays off, literally for good causes. Every task completed earns XP. You can spend your XP in the Shop to fund real charitable donations, from supporting food banks to environmental nonprofits. You’re improving yourself and your community at the same time. If a user opens the app and isn’t sure what part of doing good they want to prioritize for the day, they can speak with the “DoGood companion,” that can work with the user to narrow down goals and provide direction to a page that aligns with what the user can accomplish.
How we built it
Once narrowing down the scope of what we wanted to accomplish for this version of DoGood, we began working on the frontend and UI/UX by describing the functionality and the vision for the four main buttons and debugging any faulty design through the site. We integrated this code to our GitHub repository with more frontend development made with Cursor and React. We finally integrated sponsors like Claude for the functionality and verification of all the features and LiveKit for the DoGood companion.
Challenges we ran into
The biggest challenges we ran into was narrowing down the scope for this version of the app because the inspiration to DoGood could mean a lot of things pertaining to social good and self-improvement with endless possibilities. Another challenge we ran into was debugging tools including LiveKit and Interaction Co to be integrated into the app.
Accomplishments we're proud of
Accomplishments that we are proud of are streamlining a clean UI/UX for different iterations of the app, leveraging Claude for verification, prompt engineering a LiveKit chatbox, and creating context API for knowledge transfer between different agents.
What's next
The next steps for DoGood are giving it an aspect of community–having challenges within schools like USC or between different schools or group affiliations to encourage competition for the dopamine of earning XP. With a community page, users can organize their own service opportunities for everybody to partake in and encourage more proactivity when doing good. To accomplish this, we hope to partner with local nonprofit organizations from RCC, UC Berkeley, and USC to provide service and donation opportunities within the app.
DoGood App Features
This is a code bundle for DoGood App Features. The original project is available at https://www.figma.com/design/6sOViGx6ABV7U0aTZF4G6b/DoGood-App-Features. The fully functional site is found here: https://calhacks25-gamma.vercel.app/
Project Structure
calhacks25/
├── src/ # React frontend application
├── api/ # Vercel serverless functions
├── voice-agent/ # LiveKit voice agent (Python)
└── ...
Setup
1. Install Dependencies
Frontend:
npm i
Voice Agent:
cd voice-agent
uv sync
cd ..
2. Claude API - ⚠️ Important: Requires Backend
The app uses Claude AI to:
- Generate personalized community service activities
- Verify task completion through photo analysis
🚨 CORS Limitation: Claude's API cannot be called directly from browsers due to security restrictions.
Option A: Use Mock Data (Recommended for Testing)
✅ Works out of the box - no setup needed!
- All features functional
- Perfect for development/demo
- No backend required
Option B: Deploy with Backend (For Production)
To use real Claude API:
-
Deploy to Vercel (Recommended):
vercel deploy vercel secrets add anthropic-api-key sk-ant-your-key-here -
See
CORS_SOLUTION.mdfor detailed setup instructions
Current Status: App uses mock data (works perfectly!). Deploy to enable live Claude AI.
3. LiveKit Voice Agent Setup
The "DoGood Companion" voice assistant requires LiveKit configuration:
-
Copy environment variables:
cp .env.example .env.local -
Add your LiveKit credentials to
.env.local:LIVEKIT_API_KEY=your_api_key LIVEKIT_API_SECRET=your_api_secret LIVEKIT_URL=wss://your-project.livekit.cloud -
Configure the voice agent:
cd voice-agent # Update .env.local with same LiveKit credentials -
See
voice-agent/SETUP.mdfor detailed voice agent setup
Running the code
Quick Start (Recommended)
Run everything with a single command:
./start-dev.sh
This will start:
- LiveKit voice agent (for DoGood Companion)
- API server (for LiveKit token generation)
- Vite development server (React frontend)
The frontend will be available at http://localhost:3000.
Manual Start (Alternative)
If you prefer to run services separately:
Terminal 1 - Voice Agent:
cd voice-agent
uv run agent.py dev
Terminal 2 - Frontend & API:
npm run dev
Features
Dynamic Activity Generation
- Activities in the "Serve" section (currently uses mock data)
- Can be personalized based on user preferences
- Click "Refresh" to generate new activities
- ℹ️ Requires backend for live Claude generation (see CORS_SOLUTION.md)
Photo Verification
- Click the camera button to open your device's camera
- Take a photo of your completed task
- Verification (currently in demo mode)
- Receive XP points for completed tasks
- ℹ️ Requires backend for AI verification (see CORS_SOLUTION.md)
Voice Assistant (DoGood Companion)
- Click "Speak with DoGood Companion" to start a voice conversation
- Real-time audio interaction with AI assistant
- Visual feedback showing listening/thinking/speaking states
- Click "End Conversation" to close the assistant
- Each button press starts a fresh conversation
- ℹ️ Requires LiveKit setup and running voice agent (see voice-agent/SETUP.md)
Analysis
View
Metric
- 31
- 14
- 13
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- TypeScriptIn code
- Next.jsClaimed
- Tailwind CSSClaimed
7 of 9 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeCommits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
853 KB
Source files
103
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Sam-T-G/calhacks25
118 files · 1.8 MB · @ d68bf57
Structure
Interface
60 files · 51%Screens, components and styles rendered to the user.
API & routing
5 files · 4%Request entry points: routes, handlers and controllers.
Application logic
15 files · 13%Domain rules, services and shared utilities.
+1 more
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript40%
- TypeScript36%
- CSS11%
- Markdown11%
- Python2%
- Shell0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 56- @livekit/components-react
- @livekit/components-styles
- @radix-ui/react-accordion
- @radix-ui/react-alert-dialog
- @radix-ui/react-aspect-ratio
- @radix-ui/react-avatar
- @radix-ui/react-checkbox
- @radix-ui/react-collapsible
- @radix-ui/react-context-menu
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-hover-card
- @radix-ui/react-label
- @radix-ui/react-menubar
- @radix-ui/react-navigation-menu
- @radix-ui/react-popover
- @radix-ui/react-progress
- @radix-ui/react-radio-group
- +38 more
voice-agent/pyproject.toml
pypi · 4- httpx
- livekit-agents[deepgram,openai,silero,turn-detector,cartesia,assemblyai]
- livekit-plugins-noise-cancellation
- python-dotenv
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.