Skip to content

GenerateNU/unsprawl

Repository files navigation

Unsprawl - Data Fall 2025

Generate’s Data team is working with Unsprawl, a startup, to build a smart task management app. The app helps teams and project managers stay organized by pulling everything into one place. It makes it easier to see tasks from different tools like Trello and Jira, find tasks that may have been missed in conversations on Slack, and consolidate workflows.

About the Project

Tech Stack

  • Python
  • SQL
  • Docker
  • Digital Ocean
  • Streamlit
  • Jira API
  • Trello API
  • Slack API
  • Google Gemini
  • Hugging Face Sentence Transformers
  • pgvector
  • Postgres
  • SQL Alchemy
  • Alembic
  • FAST API
  • Supabase

Features

  • Deduplication Engine: Identify which tasks are similar using embedded vectors, cosine similarity, and Google Gemini. If the tasks are similar, it will deduplicate and consolidate them into one task.
  • Task Extraction: Identify and extract tasks assigned or mentioned in message conversations using Google Gemini and Slack API.
  • Dashboard: Display all tasks across Trello, Jira, tasks pulled from Slack messages, and consolidated tasks. Displays key metrics and graphs to gain team insight into productivity. Dashboard is created using Streamlit.

Environment Variables

To run this project, you will need to add the following environment variables to your .env file

  • DATABASE_URL=postgresql://postgres:password@db:5432/unsprawl
  • GEMINI_API_KEY=your_gemini_api_key_here
  • TRELLO_CLIENT_ID=your_trello_client_id
  • TRELLO_CLIENT_SECRET=your_trello_client_secret
  • SLACK_CLIENT_ID=your_slack_client_id
  • SLACK_CLIENT_SECRET=your_slack_client_secret
  • SLACK_REDIRECT_URI=http://localhost:8000/slack/auth/callback
  • JIRA_CLIENT_ID=your_jira_client_id
  • JIRA_CLIENT_SECRET=your_jira_client_secret
  • JIRA_REDIRECT_URI=http://localhost:8000/jira/auth/callback

Getting Started

Run Locally

1. Clone and Setup Environment

# Clone the repository
git clone https://github.com/GenerateNU/unsprawl.git
cd unsprawl

# Copy the example environment file
cp .env.example .env

Edit the .env file and fill in your credentials:

  • OAuth credentials for Trello, Slack, and Jira (create OAuth apps on each platform)
  • Gemini API key from Google AI Studio
  • Keep the DATABASE_URL as-is for local development

2. Start Backend and Database (Docker)

# First time setup - builds images and starts containers
docker compose up --build

# Subsequent runs - start containers in detached mode
docker compose up -d

This will start:

  • PostgreSQL database on localhost:5433
  • FastAPI backend on localhost:8000
  • Database migrations run automatically on startup

3. Start Frontend (Streamlit)

# In a new terminal window
cd frontend
streamlit run app.py

The Streamlit dashboard will be available at http://localhost:8501

4. Connect to Database (pgAdmin)

Use the pgAdmin desktop application to manage the database:

  1. Download and Install pgAdmin: https://www.pgadmin.org/download/
  2. Create a New Server Connection:
    • Right-click "Servers" → "Register" → "Server"
    • General Tab:
      • Name: Unsprawl Local
    • Connection Tab:
      • Host: localhost
      • Port: 5433
      • Database: unsprawl
      • Username: postgres
      • Password: 123456
    • Click "Save"

You can now browse tables, run queries, and manage the database through pgAdmin.

5. Verify Setup

6. Stop Services

# Stop Docker containers
docker compose down

# Delete containers
docker compose down -v

# Stop Streamlit (Ctrl+C in the terminal running Streamlit)

Deployment

Digital Ocean App Platform

  • One container for the backend
  • One for the frontend
  • Supabase for the Database

Useful Commands

Docker

If Python dependencies or requirements are being installed for the first time or changed, you must run the command: docker compose up --build

To start and run the Docker container, run the command: docker compose up

To update the database in the container, run the command: docker compose run --rm migrate

Alembic and SQL Alchemy

Docker must be running to use Alembic

Use the commands below to update the database:

  • cd backend

  • alembic revision --autogenerate -m "message"

  • alembic upgrade head

Future Work Ideas

  • Update password security rules
  • Create a flow for new Unsprawl users to direct them to integrate application accounts first
  • Integrate with application comment tools (ex. Google Docs, Microsoft Powerpoint, Figma)

Team Members

Name Role Primary Contributions
Kaydence Lin Project Lead Project Management, Client Communication, Feature Tracking
Jerome Rodrigo Technical Lead Technical Oversight, Technical Architecture, Jira, Deployment
Gordon Bie Data Scientist Logo, Frontend, User Auth, Embedded Vectors, Deduplication Engine
Deekshita Madhalam Data Scientist Trello, Deduplication Engine
Eleanor (Ellie) Meltzer Data Scientist Trello, Deduplication Engine, Data Dictionary
Gokul Ramanan Data Scientist Slack, Embedded Vectors, Deduplication Engine
Vishwajit (Vichu) Selvaraju Data Scientist Slack, Task Extraction, Frontend, Technical Architecture, Deployment
Melina Yang Data Scientist Trello, Task Extraction, Frontend

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages