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.
- 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
- 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.
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
# Clone the repository
git clone https://github.com/GenerateNU/unsprawl.git
cd unsprawl
# Copy the example environment file
cp .env.example .envEdit 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_URLas-is for local development
# First time setup - builds images and starts containers
docker compose up --build
# Subsequent runs - start containers in detached mode
docker compose up -dThis will start:
- PostgreSQL database on
localhost:5433 - FastAPI backend on
localhost:8000 - Database migrations run automatically on startup
# In a new terminal window
cd frontend
streamlit run app.pyThe Streamlit dashboard will be available at http://localhost:8501
Use the pgAdmin desktop application to manage the database:
- Download and Install pgAdmin: https://www.pgadmin.org/download/
- Create a New Server Connection:
- Right-click "Servers" → "Register" → "Server"
- General Tab:
- Name:
Unsprawl Local
- Name:
- Connection Tab:
- Host:
localhost - Port:
5433 - Database:
unsprawl - Username:
postgres - Password:
123456
- Host:
- Click "Save"
You can now browse tables, run queries, and manage the database through pgAdmin.
- Frontend Dashboard: http://localhost:8501
- API Documentation: http://localhost:8000
- Database: Connect via pgAdmin to
localhost:5433
# Stop Docker containers
docker compose down
# Delete containers
docker compose down -v
# Stop Streamlit (Ctrl+C in the terminal running Streamlit)Digital Ocean App Platform
- One container for the backend
- One for the frontend
- Supabase for the Database
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
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
- 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)
| 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 |