Skip to content

Commit 6eaf0c2

Browse files
authored
Gsoc 25 Week 12 update by Nikhil (#400)
* Gsoc 25 Week 12 update by Nikhil * add:removed file * fix:changes
1 parent 5a461cf commit 6eaf0c2

File tree

2 files changed

+116
-0
lines changed

2 files changed

+116
-0
lines changed
219 KB
Loading
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
---
2+
title: "GSoC '25 Week 12 Update by Nikhil Bhatt"
3+
excerpt: "Summarizing my Google Summer of Code project — Git backend for MusicBlocks. Highlights include implementing fork/PR workflows, writing detailed backend + frontend docs, and ensuring future contributors can onboard easily."
4+
category: "DEVELOPER NEWS"
5+
date: "2025-08-25"
6+
slug: "2025-08-25-gsoc-25-nikhilbhatt-week12"
7+
author: "@/constants/MarkdownFiles/authors/nikhil-bhatt.md"
8+
tags: "gsoc25,sugarlabs,final,nikhilbhatt"
9+
image: "assets/Images/GSOC.webp"
10+
---
11+
12+
<!-- markdownlint-disable -->
13+
14+
# Google Summer of Code 2025 Final Report by Nikhil Bhatt
15+
16+
**Project:** [Git backend for MusicBlocks](https://github.com/benikk/musicblocks-backend)
17+
**Mentors:** [Walter Bender](https://github.com/walterbender), [Sumit Srivastava](https://github.com/sum2it)
18+
**Duration:** August 18, 2025 – August 25, 2025
19+
20+
---
21+
22+
## Project Summary
23+
24+
The goal of my project was to **replace the legacy Planet server** with a modern **Git-backed backend** for [MusicBlocks](https://github.com/sugarlabs/musicblocks). This enables projects to be version-controlled, forked, shared, and collaborated on seamlessly via GitHub workflows.
25+
26+
I worked on two main areas:
27+
28+
1. **Backend (Node.js + Express + TypeScript)** — building APIs for `create`, `edit`, `fork`, `commitHistory`, `create-pr`, etc., with GitHub App integration.
29+
2. **Frontend (MusicBlocks client)** — integrating the new APIs into the user interface, enabling forking, PR workflows, project history browsing, and ZIP downloads.
30+
31+
Additionally, I created **comprehensive documentation** for both backend and frontend to ensure long-term maintainability.
32+
33+
---
34+
35+
## Major Contributions
36+
37+
### **Backend Implementation**
38+
- Designed and built APIs for:
39+
- **Project creation/editing** with Git-backed persistence.
40+
- **Forking & fork history tracking**.
41+
- **Commit history retrieval** at both project and commit levels.
42+
- **Pull request creation & approval workflows**.
43+
- Added **metadata structures** (`projectData.json`, `metaData.json`) for project state and authentication.
44+
- Implemented **security checks** and configuration options via `.env`.
45+
- Wrote tests for major endpoints and validated responses.
46+
47+
### **Frontend Integration**
48+
- Integrated backend APIs into the MusicBlocks client.
49+
- Added UI flows for:
50+
- Forking a project and tracking its history.
51+
- Browsing and restoring older commits.
52+
- Creating pull requests from the frontend.
53+
- Downloading projects as ZIP archives.
54+
- Managed **localStorage keys** for state persistence.
55+
- Ensured smooth transition from legacy server → GitHub workflows.
56+
57+
### **Documentation & Developer Experience**
58+
- Wrote **backend README** with setup steps, API docs, environment variables, and deployment instructions.
59+
- Documented **frontend integration**: API contracts, UI flows, and troubleshooting.
60+
- Added **manual testing checklist** to validate project workflows.
61+
- Created a **contributor’s guide** for future developers.
62+
- Improved onboarding experience with **diagrams, examples, and standardized conventions**.
63+
64+
---
65+
66+
## Testing & Results
67+
68+
- Verified all API endpoints with **manual tests and Postman collections**.
69+
- Conducted **end-to-end tests** by linking backend ↔ frontend flows.
70+
- Confirmed project history, forks, and PRs behave consistently with GitHub repos.
71+
- Ran multiple **real-world test scenarios** (student forking a project, teacher reviewing PR, restoring commits) — all successful.
72+
73+
---
74+
75+
## Challenges & Solutions
76+
77+
- **Complex Git workflows** were hard to explain. → I solved this with request/response examples and flow diagrams.
78+
- **Maintaining parity between backend and frontend** was tricky. → I standardized API naming conventions and cross-referenced docs.
79+
- **Time management** balancing documentation + coding. → Broke tasks into milestones and focused on one layer (backend/frontend) at a time.
80+
81+
---
82+
83+
## Key Learnings
84+
85+
- Learned to design **GitHub-integrated APIs** using Node.js, Express, and Octokit.
86+
- Understood the importance of **clear documentation** as a first-class contribution.
87+
- Gained experience in **frontend-backend integration** with real-world workflows.
88+
- Improved skills in **project management and time prioritization**.
89+
90+
---
91+
92+
## Code & Documentation
93+
94+
- [MusicBlocks Frontend (Branch)](https://github.com/BeNikk/musicblocks/tree/git-musicblocks-frontend)
95+
- [MusicBlocks Backend](https://github.com/benikk/musicblocks-backend)
96+
- [API Documentation (Backend README)](https://github.com/benikk/musicblocks-backend/blob/main/README.md)
97+
- [Final Report](https://github.com/benikk/GSoC-2025)
98+
99+
---
100+
101+
## Future Work
102+
103+
- Add **CI/CD pipelines** for backend + frontend.
104+
- Improve **automated testing** coverage.
105+
- Extend backend for **more Git features** (branching, rebasing, merging).
106+
- Expand contributor guides with **video tutorials and walkthroughs**.
107+
108+
---
109+
110+
## Acknowledgments
111+
112+
A big thank you to my mentors **Walter Bender** and **Sumit Srivastava** for their continuous guidance, and to the **Sugar Labs community** for reviews, feedback, and encouragement.
113+
114+
This project has been an incredible journey — not only building new features, but also ensuring MusicBlocks is more maintainable, collaborative, and future-ready.
115+
116+
---

0 commit comments

Comments
 (0)