LARK (Collaboration Platform with AI Insights for GitHub Projects) is a modern, full-stack web application designed to streamline software development workflows by integrating project management, real-time communication, and cutting-edge AI-driven code insights for teams using GitHub.
Live Demo: https://lark-pi.vercel.app/
Full Academic Report: Coming soon
- Overview
- Key Features
- Technology Stack
- System Architecture Highlights
- Prerequisites
- Getting Started
- Running the Application
- Contributing
- License
Software development teams often juggle multiple tools for version control (GitHub), task management (Jira, Trello), communication (Slack, Teams), and increasingly, separate AI coding assistants. This tool fragmentation leads to context switching, information silos, and reduced efficiency.
LARK aims to solve these problems by providing a unified platform where developers can:
- Manage their GitHub projects with integrated task boards (Kanban, Table, Calendar views).
- Communicate in real-time through project-specific and direct message channels.
- Gain deeper understanding of their codebase through AI-generated commit summaries and a contextual Code Q&A system.
This project was developed as a Final Year Project, demonstrating the feasibility and potential benefits of such an integrated, AI-augmented system.
- User Authentication & Management:
- Secure sign-up and login with email/password.
- OAuth 2.0 integration with GitHub, Google and Microsoft.
- Email verification and password reset functionality.
- User profile management.
- Project Management:
- Link and manage GitHub repositories (public and private via PAT).
- Kanban Boards: Visual task tracking with customizable columns and drag-and-drop.
- Table View: List-based task overview with sorting and filtering.
- Calendar View: Visualize tasks based on due dates.
- Task creation, assignment, status updates, priority setting.
- Project member invitation and role management (Maintainer, Contributor).
- AI-Powered Code Insights:
- Automated Commit Summarization: AI-generated natural language summaries for GitHub commit diffs using Google Gemini models.
- Contextual Code Q&A: Ask natural language questions about your linked codebase and receive AI-generated answers using a Retrieval Augmented Generation (RAG) pipeline with Google Gemini and LangChain.
- Real-Time Communication:
- Project-specific chat channels.
- Direct Messaging (DMs) between users.
- Text messaging and file attachment support.
- Real-time message updates powered by Supabase Realtime.
- Analytics & Overview:
- Project dashboard displaying key metrics: commit activity, task distribution (by status, priority), contributor insights.
- GitHub Integration:
- Fetches repository metadata, commit history, diffs, and file contents.
- Security:
- Role-Based Access Control (RBAC).
- API rate limiting (Upstash Redis).
- Secure handling of credentials and API keys via environment variables.
- Input validation using Zod.
- Frontend: Next.js (App Router), React, TypeScript, TailwindCSS, TanStack Query (React Query)
- Backend API: Next.js (API Routes), tRPC, TypeScript
- Database: Supabase PostgreSQL (with PGVector extension for AI embeddings)
- Real-time Services: Supabase Realtime (WebSockets)
- File Storage: Supabase Storage
- ORM: Prisma
- Authentication: BetterAuth (custom integration)
- AI Models: Google Gemini (
gemini-2.0-flash-lite,gemini-1.5-flash,text-embedding-004) - AI Orchestration (RAG): LangChain
- GitHub API Client: Octokit.js
- Email Sending: Nodemailer, React Email
- Rate Limiting: Upstash Redis
- Deployment: Vercel (including Cron Jobs)
- Full-Stack Next.js: Monorepo structure with frontend and backend co-located.
- End-to-End Type Safety: TypeScript, tRPC, Prisma, Zod.
- Serverless Backend: API routes deployed as serverless functions on Vercel.
- Backend-as-a-Service (BaaS): Supabase for database, real-time, and storage.
- Modular Design: tRPC routers organized by feature domain.
(For a detailed architecture diagram and discussion, please refer to the full project report, Chapters 3 & 4.)
Before you begin, ensure you have the following installed:
- Node.js (v18.x or later recommended)
- npm or yarn
- Git
- A Supabase account and project setup.
- A Google Cloud Platform project with the Generative Language API (Gemini) enabled and an API Key.
- (Optional but recommended for full functionality) An email account (e.g., Gmail) for Nodemailer to send emails via SMTP, and its App Password if using Gmail.
- (Optional) An Upstash Redis database for rate limiting.
Open your terminal or command prompt and run the following command to clone the LARK repository to your local machine:
git clone https://github.com/Haabeel/lark.git
After the command completes, navigate into the cloned directory:
cd lark
Install the project dependencies using bun, npm or yarn:
bun install
# or
npm install
# or
yarn install
Create a .env file in the root of your project by copying the .env.example file:
cp .env.example .env
- Ensure you have a Supabase project created at supabase.com.
- In your Supabase project dashboard, navigate to Database (or SQL Editor).
- Go to Extensions (usually under the "Database" section in the sidebar).
- Make sure the
uuid-osspextension is enabled. Search for it and click "Enable extension" if it's not. - Search for the
vectorextension (for PGVector) and click "Enable extension".
Apply the Prisma schema (defined in prisma/schema.prisma) to your Supabase database. This will create all the necessary tables and relations.
From the root of your project directory, run:
npx prisma migrate dev --name init # For the very first migration
If you are setting up an existing project with migrations already present, or for subsequent deployments:
npx prisma migrate deploy
And generate the Prisma client:
npx prisma generate
To run the LARK application locally in development mode with hot-reloading:
bun run dev
# or
npm run dev
# or
yarn dev
The application will typically be available at http://localhost:3000.
To create an optimised production build:
bun run build
# or
npm run build
# or
yarn build
To run the production build locally (after building):
bun run start
# or
npm run start
# or
yarn start
This project was developed as a Final Year Project by Haabeel (@Haabeel). While active development for new features may be limited post-submission, contributions in the form of bug reports, suggestions, or pull requests for improvements are welcome. Please feel free to open an issue or fork the repository.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request