Lindie is a project management solution designed specifically for indie developers. The application focuses on integration and usefulness while maintaining performance and reliability.
- 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
-
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
-
Frontend Service (Port 8502):
- Streamlit-based user interface
- Communicates with API service
- Handles user interactions
-
Database:
- MongoDB (MongoDB Atlas)
They are both running as Docker containers in AWS EC2 machine.
- 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
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.
For better performance and usefulness, I implemented two external tools:
- Serper: For searching the web
- 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 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.
-
Clone the repository:
-
Create a .env file in the root directory and add the necessary environment variables. You can use the .env.example file as a reference.
-
Run the application using Docker Compose:
docker compose up -d
- 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)
- Other 3rd party tools can be implemented ex. Notion, Google Workspace, etc.
- Frontend can be implemented with React