Skip to content

pangeran-bottor/smoothivity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smoothivity

Turn virtual meetings into actionable content.

Smoothivity connects to your Google Calendar, records Zoom and Google Meet meetings via an AI notetaker bot, and uses Google Gemini to generate follow-up emails, social media posts, and CRM updates — automatically.

Features

  • Google Calendar sync — Shows upcoming events with Google Meet or Zoom links
  • AI notetaker bot — Sends a Recall.ai bot to record and transcribe meetings
  • Follow-up email generation — AI-drafted summary with action items from the transcript
  • Automation templates — User-defined prompts that generate platform-specific content (LinkedIn, Facebook) from each meeting
  • Social posting — Copy or post generated content directly to LinkedIn or a Facebook Page
  • HubSpot integration — Search contacts, get AI-suggested property updates from the transcript, and batch-update selected fields
  • Multiple Google accounts — Aggregate calendar events across connected accounts

Tech Stack

Layer Technology
Backend Python 3.12+, FastAPI, SQLAlchemy 2.x (async), Alembic
Frontend Next.js 15 (App Router), React 19, TypeScript, Tailwind CSS v4
Database PostgreSQL 16
Background Jobs Celery + Redis
Auth OAuth 2.0 (Google, LinkedIn, Facebook, HubSpot), JWT sessions
AI Google Gemini API
Transcription Recall.ai

Prerequisites

  • Python 3.12+
  • Node.js 18+
  • Docker & Docker Compose (for PostgreSQL and Redis)

Getting Started

Quick start (using Make)

make setup        # Starts infra, copies .env files, installs deps, runs migrations
# Fill in your API keys in backend/.env

# Then in separate terminals:
make dev-backend  # FastAPI on :8000
make dev-frontend # Next.js on :3000
make dev-worker   # Celery worker + beat

Run make help to see all available commands.

Make Commands

Command Description
make setup Full first-time setup (infra + env + deps + migrate)
make infra Start PostgreSQL + Redis containers
make infra-stop Stop containers
make infra-logs Tail container logs
make dev-backend Start FastAPI dev server (port 8000)
make dev-frontend Start Next.js dev server (port 3000)
make dev-worker Start Celery worker with beat scheduler
make migrate Run all pending migrations
make migrate-new msg="description" Generate a new migration
make lint Run all linters (ruff + ESLint)
make format Auto-format backend code
make build Production build frontend
make clean Remove build artifacts and caches

Manual setup

Step-by-step without Make

1. Start infrastructure

docker compose up -d

This starts PostgreSQL (port 5432) and Redis (port 6379).

2. Backend setup

cd backend
cp .env.example .env
# Fill in your API keys and OAuth credentials in .env

python -m venv .venv
source .venv/bin/activate
pip install -e .

# Run database migrations
alembic upgrade head

# Start the API server
uvicorn app.main:app --reload

The API will be available at http://localhost:8000.

3. Start Celery worker

In a separate terminal:

cd backend
source .venv/bin/activate
celery -A app.core.celery_app worker -l info -B

The -B flag enables the beat scheduler for periodic tasks (bot polling, token refresh).

4. Frontend setup

cd frontend
cp .env.example .env.local

npm install
npm run dev

The app will be available at http://localhost:3000.

Environment Variables

Backend (backend/.env)

Variable Description
DATABASE_URL PostgreSQL connection string (asyncpg)
REDIS_URL Redis connection string
SECRET_KEY Secret for signing JWT tokens
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET Google OAuth credentials
RECALL_API_KEY / RECALL_REGION Recall.ai API key and region
GEMINI_API_KEY Google Gemini API key
LINKEDIN_CLIENT_ID / LINKEDIN_CLIENT_SECRET LinkedIn OAuth credentials
FACEBOOK_APP_ID / FACEBOOK_APP_SECRET Facebook OAuth credentials
HUBSPOT_CLIENT_ID / HUBSPOT_CLIENT_SECRET HubSpot OAuth credentials

Frontend (frontend/.env.local)

Variable Description
NEXT_PUBLIC_API_URL Backend API URL (default: http://localhost:8000/api)
NEXT_PUBLIC_APP_URL Frontend URL (default: http://localhost:3000)

Project Structure

smoothivity/
├── backend/
│   ├── app/
│   │   ├── api/routes/      # FastAPI route handlers
│   │   ├── core/            # Config, database, security, Celery
│   │   ├── models/          # SQLAlchemy ORM models
│   │   ├── schemas/         # Pydantic request/response schemas
│   │   ├── services/        # External API integrations
│   │   ├── tasks/           # Celery background tasks
│   │   └── main.py          # FastAPI app entrypoint
│   └── alembic/             # Database migrations
├── frontend/
│   └── src/
│       ├── app/             # Next.js App Router pages
│       ├── components/      # Reusable React components
│       └── lib/             # API client, auth context, types
└── docker-compose.yml       # PostgreSQL + Redis

API Endpoints

Method Endpoint Description
POST /api/auth/google Initiate Google OAuth
GET /api/auth/google/callback Google OAuth callback
POST /api/auth/logout Logout
GET /api/auth/me Get current user
GET /api/calendar/events List upcoming events (triggers sync)
POST /api/calendar/events/{id}/record Toggle meeting recording
GET /api/meetings List past meetings
GET /api/meetings/{id} Meeting detail with transcript and results
GET/POST/PUT/DELETE /api/automations Automation template CRUD
POST /api/social/linkedin/post Post to LinkedIn
POST /api/social/facebook/post Post to Facebook Page
GET /api/hubspot/contacts/search Search HubSpot contacts
POST /api/hubspot/contacts/{id}/suggestions AI-suggested contact updates
PATCH /api/hubspot/contacts/{id} Batch update HubSpot contact
GET /api/settings Get user settings
PATCH /api/settings/bot-preference Update bot join offset
GET /api/settings/facebook-pages List Facebook Pages
POST /api/settings/facebook-pages/{id}/select Select Facebook Page

OAuth connect/callback routes also available for LinkedIn, Facebook, and HubSpot at /api/auth/{provider} and /api/auth/{provider}/callback.

Background Jobs

Job Schedule Purpose
Bot status poller Every 3 minutes Polls Recall.ai for completed recordings, creates meeting records, enqueues AI generation
HubSpot token refresh Every 5 minutes Proactively refreshes tokens expiring within 10 minutes
Calendar sync On dashboard load Fetches events from all connected Google accounts
AI content generation On meeting completion Generates follow-up email and automation results via Gemini

License

This project is licensed under the MIT License.

About

AI-powered meeting productivity platform that turns conversations into structured actions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors