Skip to content

Lindie is product manager and researcher for small development teams

Notifications You must be signed in to change notification settings

anilaltuner/Lindie

Repository files navigation

Lindie - Project Management for Indie Developers

Project Overview

Lindie is a project management solution designed specifically for indie developers. The application focuses on integration and usefulness while maintaining performance and reliability.

Features

  • Linear workspace management
  • Project and issue tracking
  • Mutate components of the Linear API like viewing, creating and updating projects, issues, teams, etc.
  • For researching real-time, grounded data it uses Serper API
  • For scraping the links and content of the pages it uses Jina API

Architecture & Technical Decisions

Architecture

Abstract Architecture

  1. API Service (Port 8000):

    • Handles agent and Linear API interactions
    • Handles external tool authentications and interactions
    • Function calling
    • Manages authentication and authorization
    • Provides monitoring and metrics via Prometheus
  2. Frontend Service (Port 8502):

    • Streamlit-based user interface
    • Communicates with API service
    • Handles user interactions
  3. Database:

    • MongoDB (MongoDB Atlas)

They are both running as Docker containers in AWS EC2 machine.

Tech Stack

  • Backend: FastAPI (Python 3.11)
  • Frontend: Streamlit
  • Database: MongoDB
  • Implemented External API: Linear
  • LLMs: Gemini, OpenRouter, Anthropic
  • External Tools: Serper, Jina
  • Containerization: Docker & Docker Compose
  • Monitoring: Prometheus
  • Authentication: JWT-based

Usage

Authentication to Linear

Linear supports both OAuth and API key authentication. For more information, please refer to the Linear API documentation.

In this project, I applied both authentication methods but the API key is used for the sake of simplicity and presentation.

External Tools

For better performance and usefulness, I implemented two external tools:

  1. Serper: For searching the web
  2. Jina: For scraping the links and content of the pages

Both tools needs an api key which it should be added by the developer itself. Only Linear API key needed for the application.

Linear's API Structure

Linear's API has detailed GraphQL structure for external usage and I implemented this schemas for using it.

Note: The API service runs on port 8000 but you generally won't need to interact with it directly as the frontend handles all API communication.

Setup & Installation

  1. Clone the repository:

  2. Create a .env file in the root directory and add the necessary environment variables. You can use the .env.example file as a reference.

  3. Run the application using Docker Compose:

docker compose up -d

Technical Debt

  • Application needs unit and functional testing
  • Application needs better error handling
  • Application needs better logging
  • Grafana dashboard is not implemented
  • EC2 machine is not optimized for the application
  • CI/CD pipeline is not implemented
  • Team support is not implemented
  • Should pay more for higher rate limits of the external tools
  • Oauth can be implemented to frontend (backend is already implemented)

Future Work

  • Other 3rd party tools can be implemented ex. Notion, Google Workspace, etc.
  • Frontend can be implemented with React

About

Lindie is product manager and researcher for small development teams

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages