FamilyFirstClick is a senior living platform that gives families real-time transparency into their loved one's care, provides facility staff a full CRM for resident management, and automates transportation scheduling for medical appointments — all powered by AI.
- Family Transparency Portal — Families get a live view of their resident's daily activity, health notes, and care updates without needing to call the facility.
- Facility CRM — Staff and admins manage resident profiles, care records, family contacts, and communication logs in one place.
- AI-Powered Assistance — An embedded AI agent helps staff and families surface insights, answer questions, and draft communications from resident data.
- Automated Transportation System — Appointments are detected from care records and the system automatically coordinates transportation logistics, reducing manual scheduling overhead.
- Frontend: React (CRA) — resident/family portal, staff dashboard, admin CRM views
- Backend: FastAPI — resident records, care timeline, appointment management, transport scheduling, AI chat
- Storage: Local JSON + Chroma vector DB for record metadata, notes, and semantic search
- Auth: Firebase Authentication (Google Sign-In)
cp .env.example .envSet at least:
OPENAI_API_KEY=your_openai_api_key_herecp frontend/.env.example frontend/.env.localFill in the Firebase values in frontend/.env.local:
REACT_APP_FIREBASE_API_KEYREACT_APP_FIREBASE_AUTH_DOMAINREACT_APP_FIREBASE_PROJECT_IDREACT_APP_FIREBASE_STORAGE_BUCKETREACT_APP_FIREBASE_MESSAGING_SENDER_IDREACT_APP_FIREBASE_APP_ID
In Firebase Console: create a project, enable Authentication → Google, add a Web app, and copy the config values above.
If you change any REACT_APP_* values, restart npm start.
Optional backend settings:
CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
TIMELINE_DB_PATH=timeline.json
PATIENT_DB_PATH=patient_data.json
CHROMA_DB_PATH=./chroma_db
RECORDS_DIR=recordsOptional frontend build setting:
REACT_APP_API_BASE_URL=If REACT_APP_API_BASE_URL is empty, the frontend uses:
http://127.0.0.1:8000during local development/apiwhen deployed behind the bundled nginx reverse proxy
chmod +x run.sh
./run.shThis starts:
- Frontend: http://localhost:3000
- Backend: http://localhost:8000
- API docs: http://localhost:8000/docs
Backend:
python -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt
python -m uvicorn backend.app:app --host 127.0.0.1 --port 8000Frontend:
cd frontend
npm install
npm startcp .env.example .envmkdir -p data/records data/chroma_db
touch data/timeline.json data/patient_data.jsondocker compose up --buildServices:
- Frontend: http://localhost:3000
- Backend: http://localhost:8000
In Docker, the frontend serves the SPA with nginx and proxies /api/* to the backend container.
- Configure
REACT_APP_API_BASE_URLat deploy time to point the frontend at the correct backend. - Configure CORS and data paths via backend env vars.
- Sensitive resident data should be mounted at runtime, not baked into Docker images.
.dockerignoreexcludes secrets, records, local databases, and vector data from image builds.
The repository ignores:
.envand other local env files- resident records and uploaded files
- local JSON databases
- Chroma vector storage
- private key and certificate files
- Docker-mounted
data/contents