WebiU: API Optimization, Scalable Architecture, and AI Enhancements
A proposal to make WebiU production-ready with optimized APIs, a scalable real-time data pipeline, automated CI/CD workflows, and selective AI-powered project presentation.
Personal Information
| Name | Bhavik Joshi |
| GitHub | Bhav-ikkk |
| Organization | C2SI (WebiU) |
| Project repository | c2siorg/Webiu |
| Project length | 350 hours |
| Difficulty | Medium |
Abstract
WebiU is a dynamic organization website that fetches project data in real time from GitHub repositories using reusable component architecture. It currently serves as the public face for C2SI’s 300+ projects. While the existing platform works, it faces scalability bottlenecks in its API layer, lacks automated deployment infrastructure, and does not leverage any form of intelligent content generation.
This proposal targets four concrete areas: refactoring APIs for faster and lighter responses, introducing a serverless-compatible real-time data pipeline, automating testing and deployment through GitHub Actions CI/CD, and adding lightweight AI features for project summarization and discoverability. Each area is scoped to deliver a working, testable increment by the end of its timeline phase.
Motivation
WebiU is C2SI’s primary public-facing platform. Every GSoC contributor, potential collaborator, and organizational stakeholder interacts with it. The quality of this platform directly affects how the organization is perceived.
I am drawn to this project for three reasons. First, the problem is real and operational, not academic. Optimizing API response times, handling rate limits at scale, and generating useful project summaries are engineering challenges that exist in production systems everywhere. Second, the existing codebase is mature enough to build on but has clear, well-defined gaps. Third, I have already invested significant effort understanding the WebiU architecture through pre-GSoC contributions, which gives me confidence that the proposed timeline is realistic.
Pre-GSoC Contributions
I completed both pre-GSoC tasks for the WebIU 2026 selection process, demonstrating familiarity with the codebase and the problem domain.
Designed a scalable GitHub data aggregation architecture using WebIU’s existing NestJS stack with Redis and BullMQ. Covers webhooks, ETags, rate-limit math, and horizontal scaling to 10,000+ repos.
Built and deployed a working tool that analyzes GitHub repositories for activity, complexity, and learning difficulty. Includes custom scoring formulas, Octokit integration, and structured exports.
Project Description
Current State
WebiU is built on NestJS (backend), Angular with SSR (frontend), GraphQL/Apollo (API layer), and MongoDB/Mongoose (storage). It fetches repository data from the GitHub API and renders it through configurable component templates.
The current limitations:
- API performance. Responses include full repository payloads without field-level filtering. There is no response compression. Repeated requests for the same data hit the GitHub API every time.
- Scalability ceiling. The data fetching runs synchronously in the request path. At 300+ repositories, this produces noticeable latency. At 1,000+, it will become unusable.
- No deployment automation. Builds and deployments are manual. There is no automated test pipeline, no rollback capability, and no staging environment.
- No intelligent content. Project descriptions are raw GitHub descriptions. There is no summarization, no automated tech-stack detection, and no semantic search capability.
Proposed Solution
The work is organized into four pillars, each delivering independently testable value.
Pillar 1: API Optimization
Goal: Reduce response times and payload sizes for all frontend-facing endpoints.
Approach:
- Implement field-level selection in the GraphQL schema so the Angular frontend requests only the data it needs for each view (project list, project detail, search results).
- Add GZIP/Brotli compression at the NestJS response layer using
compressionmiddleware. - Introduce an in-memory cache layer (Redis with
@nestjs/cache-manager) with a 10-minute TTL between the GraphQL resolvers and MongoDB. This absorbs repeated reads without touching the database. - Add ETag support for GitHub API requests. Unchanged repositories return
304 Not Modifiedat zero rate-limit cost.
Measurable outcome: Average API response time drops below 50ms for cached requests. Payload sizes reduce by at least 40% on list views.
Pillar 2: Scalable Real-Time Architecture
Goal: Decouple data ingestion from the request path so the system can handle 1,000+ repositories without degradation.
Approach:
This pillar implements the architecture I designed in Pre-GSoC Task 1:
- Set up Redis as a shared cache and message broker.
- Introduce BullMQ for background job processing within the existing NestJS backend.
- Configure organization-level GitHub webhooks to trigger immediate data refreshes on
push,star,repository, andissuesevents. - Add a nightly reconciliation cron job (
@nestjs/schedule) as a consistency fallback. - Implement worker concurrency controls to respect GitHub’s secondary rate limits.
- Add a Dead Letter Queue for jobs that fail repeatedly.
Measurable outcome: Full data sync for 1,000 repositories completes in under 15 minutes. Frontend requests never wait for GitHub API calls.
Pillar 3: CI/CD Integration
Goal: Automate testing, building, and deployment with rollback capability.
Approach:
- Create a GitHub Actions workflow for the
mainbranch: lint, unit tests, build, and deploy to the production environment. - Create a separate workflow for pull requests: lint, unit tests, and build verification without deployment.
- Add automated Lighthouse performance audits on pull requests to catch regressions before merge.
- Implement deployment rollback using Vercel’s instant rollback API, triggered automatically if the post-deploy health check fails.
- Set up a staging environment that deploys from the
developbranch for mentor review before production merges.
Measurable outcome: Every merged PR is automatically tested, built, and deployed. A failed deployment rolls back within 60 seconds.
Pillar 4: AI Enhancements
Goal: Improve project presentation and discoverability without increasing system complexity.
Approach:
- Generate concise project summaries (2-3 sentences) from GitHub README content and repository metadata using an LLM API call (OpenAI or a self-hosted alternative). Summaries are generated once and cached in MongoDB alongside repository data.
- Detect technology stacks automatically by parsing repository language data, dependency manifests (
package.json,requirements.txt,go.mod, etc.), and CI configuration files. This replaces manually maintained tech badges. - Enable optional natural-language project search by mapping user queries to existing metadata fields (language, topic, description) using lightweight embedding similarity. This does not require a vector database; it uses pre-computed embeddings stored as arrays in MongoDB.
- All AI outputs are cached and refreshed only when the underlying repository data changes (detected via the webhook/cron pipeline from Pillar 2).
Measurable outcome: Every repository has an auto-generated summary and accurate tech-stack badges. Natural-language search returns relevant results for queries like “machine learning projects in Python.”
Deliverables
Required
| # | Deliverable |
|---|---|
| 1 | Optimized GraphQL schema with field-level selection and response compression |
| 2 | Redis caching layer with 10-minute TTL and ETag-based conditional requests |
| 3 | BullMQ job queue for decoupled GitHub data ingestion |
| 4 | Organization-level webhook handler with signature validation |
| 5 | Nightly reconciliation cron with Dead Letter Queue |
| 6 | GitHub Actions CI/CD pipeline for main and PR branches |
| 7 | Automated deployment with rollback on health check failure |
| 8 | AI-generated project summaries cached in MongoDB |
| 9 | Automated tech-stack detection from repository metadata |
| 10 | Documentation for all new systems and configuration |
Stretch Goals
| # | Deliverable |
|---|---|
| 1 | Natural-language project search using embedding similarity |
| 2 | Admin dashboard with project analytics and manual refresh controls |
| 3 | Lighthouse performance regression checks on pull requests |
Timeline
Pre-GSoC (Now through May)
- Continue studying the WebiU codebase, focusing on the NestJS module structure and Angular SSR rendering pipeline.
- Submit additional PRs for bug fixes or small improvements to deepen codebase familiarity.
- Set up local development environment with Redis for early prototyping.
Community Bonding (May 26 to June 15)
- Discuss implementation details with mentors Mahender and Charith.
- Finalize the Redis caching key structure and BullMQ job schema.
- Agree on the GraphQL schema changes and field-selection approach.
- Resolve open questions about AI provider selection and cost constraints.
- Set up staging environment on Vercel.
Coding Period
| Week | Dates | Focus | Deliverables |
|---|---|---|---|
| 1 | Jun 16 - 22 | API optimization | GraphQL field selection, response compression middleware |
| 2 | Jun 23 - 29 | API optimization | Redis caching layer, ETag support for GitHub requests |
| 3 | Jun 30 - Jul 6 | Real-time architecture | Redis setup, BullMQ queue configuration, worker skeleton |
| 4 | Jul 7 - 13 | Real-time architecture | Webhook handler with signature validation, job processing |
| 5 | Jul 14 - 20 | Real-time architecture | Nightly cron, Dead Letter Queue, concurrency controls |
| 6 | Jul 21 - 27 | Buffer and testing | Integration testing for Pillars 1 and 2, documentation, bug fixes |
| Jul 28 | Midterm evaluation | API optimization and real-time architecture complete and tested | |
| 7 | Jul 28 - Aug 3 | CI/CD | GitHub Actions workflows for main and PR branches |
| 8 | Aug 4 - 10 | CI/CD | Automated deployment, rollback mechanism, staging environment |
| 9 | Aug 11 - 17 | AI enhancements | Project summary generation, caching in MongoDB |
| 10 | Aug 18 - 24 | AI enhancements | Tech-stack detection, badge generation |
| 11 | Aug 25 - 31 | Integration and polish | End-to-end testing, stretch goals if time permits |
| 12 | Sep 1 - 7 | Buffer | Final documentation, code cleanup, mentor review |
| Sep 8 | Final evaluation | All deliverables complete, documented, and deployed |
Weeks 6 and 12 are explicit buffer periods. Heavy implementation is front-loaded in the first coding period. Each phase produces working, mergeable code rather than accumulating into a single large PR.
Availability
I can commit approximately 30 to 35 hours per week during the summer period (June through August). If academic coursework resumes in September, I will adjust to 20 to 25 hours per week but will compensate by front-loading implementation work in the earlier weeks. I have no other GSoC applications or competing commitments during this period.
Post-GSoC Plans
I plan to remain an active contributor to WebIU after GSoC. Specific areas I intend to continue working on:
- Maintaining and iterating on the CI/CD pipeline as new deployment requirements emerge.
- Extending the AI enhancements with the natural-language search feature if it is not completed during GSoC.
- Mentoring future contributors on the real-time architecture and caching systems.
- Contributing to other C2SI projects where the patterns built here (queue-based ingestion, conditional API requests, AI summarization) can be reused.
Technology Choices
| Technology | Status in WebiU | Role in This Proposal |
|---|---|---|
| NestJS (v10) | Existing | Backend framework for all new modules |
| Angular SSR | Existing | Frontend rendering, no changes proposed to the framework |
| GraphQL / Apollo | Existing | Optimized with field-level selection |
| MongoDB / Mongoose | Existing | Persistent storage for repos, AI summaries, embeddings |
| Axios | Existing | HTTP client for GitHub API with ETag support |
| Redis | New | Cache layer and BullMQ message broker |
| BullMQ | New | Background job queue for decoupled data ingestion |
| GitHub Actions | New | CI/CD automation for testing and deployment |
| OpenAI API (or equivalent) | New | Project summary generation and tech-stack inference |