Project Info
This project did not submit a demo video on Devpost.
Inspiration
Social workers are the unsung heroes of our society—balancing large caseloads, bureaucratic hurdles, and emotionally draining tasks, often without the tools to match their mission. We wanted to build something that doesn’t just “use AI,” but genuinely serves the people who serve others. We were inspired by real interviews and research that revealed how overburdened systems leave both social workers and their clients underserved. SOLACE was born to fill that gap with empathy-driven AI tools.
What it does
SOLACE is an AI-powered assistant designed to support social workers with their most time-consuming responsibilities. Our platform allows social workers to: Log and manage important tasks (to-dos, deadlines, appointments) Auto-summarize long case notes using state-of-the-art AI Surface key client needs and connect them to local resources Work faster, with more clarity—without compromising on care
How we built it
Frontend: React + Tailwind CSS for a clean, mobile-responsive UI Mobile:React Native, Expo SDK 51+, React Navigation -Web: Next.js 15, React 18+, TypeScript, Tailwind CSS, Vercel deployment Backend: Node.js for routing and Python for AI processing AI Integration: Hugging Face BART model for classifying client case notes Sentence transformers for contextual resource matching Claude AI for monthly and quarterly report insight generation Data Design: Local-only sensitive data handling to preserve privacy
Challenges we ran into
Privacy vs Personalization: Designing a system that respects confidentiality while remaining context-aware Multiple AI Pipelines: Combining different models (NLP, embeddings) into a single cohesive product Time Constraints: Training useful models and implementing them meaningfully under strict hackathon time limits
Accomplishments we're proud of
Successfully integrating AI APIs and models for the first time as a team Implementing real-time voice input and processing tools Creating a product that doesn’t just look polished—but serves a purpose
What we learned
How to fine-tune and use pretrained NLP models for real-world tasks Key frontend skills in React and Tailwind Voice AI tools and how to work with APIs under pressure Collaborative development and ethical AI thinking, all under 36 hours
What's next
Expand to include appointment scheduling, live calling, and multi-user collaboration Build a client-facing version of the app so individuals can find help directly Improve AI accuracy with more training data, and add support for multilingual and mobile accessibility Launch a beta program with real social workers and gather feedback
SOLACE - Social Work Operations Assistant
Social Work Operations and Link-up Assistant for Collaborative Excellence
Empowering social workers in the San Francisco Bay Area with AI-powered tools for case management, documentation, and collaboration.
📁 Project Structure
solace/
├── 📱 mobile/ # React Native mobile app (Expo)
├── 🌐 web/ # Next.js web application
├── 🗄️ backend/ # Python FastAPI backend & database setup
└── 📚 README.md # This comprehensive guide
🚀 Quick Start
Prerequisites
- Node.js 18+ and npm
- Python 3.8+ (for backend)
- Expo CLI (for mobile development)
- Supabase account
1. Database Setup (Required First!)
cd backend
pip install -r requirements.txt
# Set up Supabase:
# 1. Create project at supabase.com
# 2. Run setup-database.sql in SQL Editor
# 3. Update credentials in backend/.env and mobile/lib/supabase.js
2. Backend API (Python FastAPI)
cd backend
python start.py
# API runs at http://localhost:8000
3. Web Application
cd web
npm install
npm run dev
# Visit http://localhost:3000
4. Mobile Application
cd mobile
npm install
npx expo start
# Use Expo Go app or simulator
🏗️ Architecture
🌐 Web App (/web)
- Framework: Next.js 15 with JavaScript
- Styling: Tailwind CSS
- Features: PWA-ready, responsive design
- Authentication: Supabase Auth
- Database: Supabase PostgreSQL
📱 Mobile App (/mobile)
- Framework: React Native with Expo SDK 51
- Platform: iOS and Android
- Features: Native mobile experience
- Authentication: Supabase Auth (shared with web)
- API: Connects to Python FastAPI backend
🗄️ Backend (/backend)
- Framework: Python FastAPI
- Database: Supabase PostgreSQL
- Authentication: JWT with Supabase Auth
- AI Services: Claude 4 (Anthropic), Vapi (Voice)
- Caching: Redis (optional)
- Features: Client management, case notes, task management, reports
🔧 Technology Stack
- Frontend: React, Next.js, React Native, Tailwind CSS
- Backend: Python FastAPI, Supabase PostgreSQL
- AI/ML: Claude 4, Vapi Voice Services
- Auth: Supabase Auth (JWT)
- Mobile: Expo SDK 51
- Deployment: Vercel (web), Expo (mobile), any Python host (backend)
📊 Features
Core Functionality
- ✅ User Authentication - Secure login/signup across platforms
- ✅ Cross-Platform - Web and mobile apps with shared backend
- ✅ Real-time Sync - Data synced across all devices
- ✅ PWA Support - Installable web app
- ✅ Responsive Design - Works on all screen sizes
Social Work Tools
- 📋 Client Management - Complete CRUD operations for client records
- 📝 Case Notes - Digital documentation with voice-to-text
- ✅ Task Management - AI-powered task generation and tracking
- 📊 Reports - Multi-model AI analysis and report generation
- 🔔 Notifications - Task and appointment reminders
AI-Powered Features
- 🎤 Voice Notes - Convert speech to case notes
- 🤖 Task Generation - AI suggests tasks based on case context
- 📈 Report Analysis - Intelligent report generation
- 🔍 Classification - Automated case categorization
🔐 Configuration
Environment Variables
Backend (create backend/.env):
# Application Settings
NODE_ENV=development
PORT=8000
LOG_LEVEL=INFO
# Database Configuration
SUPABASE_URL=your_supabase_url_here
SUPABASE_ANON_KEY=your_supabase_anon_key_here
SUPABASE_JWT_SECRET=your_supabase_jwt_secret_here
# Redis Configuration (Optional)
REDIS_URL=redis://localhost:6379
# AI Services Configuration
ANTHROPIC_API_KEY=your_anthropic_api_key_here
Web App (create web/.env.local):
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url_here
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key_here
Mobile App (update mobile/lib/supabase.js):
const supabaseUrl = 'your_supabase_url_here';
const supabaseAnonKey = 'your_supabase_anon_key_here';
Supabase Setup
-
Create Supabase Project:
- Go to supabase.com
- Create new project
- Note your Project URL and anon key
-
Run Database Setup:
-- In Supabase SQL Editor, run: -- backend/setup-database.sql -- backend/setup-tasks-schema.sql -- backend/setup-case-notes-schema.sql -
Configure Authentication:
- Enable email/password auth in Supabase dashboard
- Set up row-level security policies
🔌 API Endpoints
Health & Info
GET /health- Health checkGET /api- API information
Clients
GET /api/clients- List clientsGET /api/clients/{id}- Get client detailsPOST /api/clients- Create clientPUT /api/clients/{id}- Update clientDELETE /api/clients/{id}- Delete client
Case Notes
GET /api/case-notes- List case notesPOST /api/case-notes- Create case note
Tasks
GET /api/tasks- List tasksPOST /api/tasks- Create task
Reports
GET /api/reports- List reportsPOST /api/reports/generate- Generate report
🧪 Testing
Demo Credentials
For testing both web and mobile apps:
- Email:
demo@solace.app - Password:
demo123
Development Testing
# Backend API testing
curl http://localhost:8000/health
# Web app testing
cd web && npm run build && npm run dev
# Mobile app testing
cd mobile && npx expo start --clear
🚀 Deployment
Web App (Vercel)
cd web
npm install -g vercel
vercel --prod
Mobile App (Expo)
cd mobile
npx expo build:android # or build:ios
Backend (Python)
cd backend
python start.py production
# Deploy to any Python hosting service (Heroku, Railway, etc.)
🐛 Troubleshooting
Database Issues
cd backend
# Run database-fix.sql if user profiles aren't being created
Web App Issues
cd web
rm -rf .next node_modules
npm install && npm run dev
Mobile App Issues
cd mobile
rm -rf node_modules
npm install && npx expo start --clear
Backend Connection Issues
- For physical devices: Replace
localhostwith your computer's IP address - Check firewall settings for port 8000
- Verify Supabase credentials and network connectivity
🛡️ Security & Privacy
- Authentication: Secure Supabase Auth with JWT tokens
- Data Protection: Row Level Security (RLS) policies
- HIPAA Considerations: Designed with privacy best practices
- Encryption: Data encrypted in transit and at rest
- Rate Limiting: API rate limiting and request validation
🔄 Data Flow
- Authentication: Users log in via Supabase Auth (web/mobile)
- API Requests: Frontend apps call Python FastAPI backend
- Database: Backend queries Supabase PostgreSQL with RLS
- Real-time: Changes sync across web and mobile via Supabase
- AI Processing: Voice notes and reports processed via Claude/Vapi
📱 Development URLs
- Web App: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Supabase Dashboard: Your project dashboard URL
🤝 Contributing
-
Choose your development area:
/web- Web application features/mobile- Mobile app features/backend- API and database changes
-
Follow the setup instructions for your chosen area
-
Make changes and test thoroughly across platforms
-
Submit pull requests with clear descriptions
📄 License
This project is designed for social work professionals in the San Francisco Bay Area. Please ensure compliance with local regulations and privacy requirements.
🆘 Support
For technical support:
- Check this README for setup instructions
- Review the development setup for your specific platform
- Check console logs and error messages
- Verify Supabase configuration and connectivity
Built with ❤️ for social workers making a difference in their communities.
Analysis
View
Metric
- 22
- 9
- 4
- 1
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
- AnthropicIn code
- CSSIn code
- FastAPIIn code
- Hugging FaceIn code
- JavaScriptIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- PyTorchIn code
- ReactIn code
- RedisIn code
- SQLIn code
- SupabaseIn code
- Tailwind CSSIn code
- VercelClaimed
14 of 15 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
669 KB
Source files
86
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
DianaTao/solace
109 files · 1.3 MB · @ 3f351b1
Structure
Interface
37 files · 34%Screens, components and styles rendered to the user.
API & routing
4 files · 4%Request entry points: routes, handlers and controllers.
Application logic
30 files · 28%Domain rules, services and shared utilities.
Data & schema
7 files · 6%Schema definitions, migrations and data access.
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
- JavaScript70%
- Python23%
- CSS3%
- SQL2%
- Markdown1%
- YAML1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/requirements.txt
pypi · 31- aiofiles
- aiohttp
- anthropic
- cryptography
- email-validator
- fastapi
- google-api-python-client
- google-auth
- google-auth-httplib2
- google-auth-oauthlib
- httpx
- jsonschema
- mutagen
- passlib[bcrypt]
- pydantic
- pydub
- PyJWT
- pytest
- +13 more
web/package.json
npm · 21- @headlessui/react
- @heroicons/react
- @supabase/supabase-js
- @tailwindcss/forms
- @tailwindcss/typography
- autoprefixer
- clsx
- date-fns
- lucide-react
- next
- postcss
- react
- react-dom
- react-hot-toast
- tailwind-merge
- tailwindcss
- uuid
- zustand
- +3 more
backend/package.json
npm · 16- anthropic
- fastapi
- google-generativeai
- httpx
- openai
- pydantic
- python-dotenv
- python-multipart
- redis
- supabase
- uvicorn
- +5 more
mobile/package.json
npm · 13- @expo/vector-icons
- @react-native-async-storage/async-storage
- @supabase/supabase-js
- expo
- expo-av
- expo-document-picker
- expo-file-system
- expo-linear-gradient
- expo-status-bar
- react
- react-native
- react-native-vector-icons
- +1 more
package.json
npm · 1- @supabase/supabase-js
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.