在Build2Learn Chennai的3个小时内,我是如何做出我的第一个开放源代码贡献的

2026年8月29日2 次浏览来源:Dev.to阅读原文

正文保留英文原文(机翻易破坏代码与排版),标题/摘要已提供中文

On August 29, 2026, I attended the Build2Learn hackathon/collab event held at Grootan Technologies in Perungudi, Chennai, from 9:00 AM to 2:00 PM.

I walked in with no big idea of my own.

What is Build2Learn?

Build2Learn isn't a regular seminar.

It's not about theory — it's a high-energy space where people actually build software and learn by doing.

The crowd included many senior professionals with 5 to 20 years of experience across IT companies.

Watching how these senior engineers think, two things became clear to me: Fast Product Delivery* — They don't waste months planning.

They identify the core value, build a working prototype, and get it into users' hands right away.

Real-Time Problem Solving* — No matter how big or difficult a task looks, they break it into small parts and solve it quickly using modern tools.

Suresh Anna and His "Noolagam" Project While looking around for someone to help, I met Suresh.

He was building "Noolagam" — a digital library/book platform project.

His tech stack was quite modern: Frontend: Flutter Backend: Hono.js My own background was a bit different — I know Node.js, Express, and MySQL reasonably well, and I'm currently learning backend development with TypeScript, Drizzle ORM, and SQLite.

Even though our tech backgrounds didn't fully match, Suresh's project needed a Book Review System.

I saw this as my chance and offered: "I'll get the backend schema ready for the review feature for you." He agreed.

The clock started — I had exactly 2 hours. ** Technical Implementation** The login page wasn't fully ready yet.

So instead of waiting for it, I thought like an agile developer and planned to run the review feature using a guest-user system (as Suresh suggested).

Here's the code I wrote using TypeScript and Drizzle ORM for the SQLite database: Breakdown of the design decisions bookId constraint* — .references(() => books.id, { onDelete: 'cascade' }).

This was new to me, and I asked Gemini to explain what it does and learned it from there.

It means that if a book is deleted from the Noolagam app, all its associated reviews get cleaned up automatically from the database — keeping the database from filling up with orphaned data. username fallback — Since there's no login system yet, taking it directly as a text string was useful, letting the frontend team connect their UI to our backend quickly for testing. isHidden state — Important for handling unwanted spam comments: instead of deleting them outright, they can be hidden from the app while still being kept in the database.

A senior developer (Gokul anna) taught me how to use Claude AI as a pairing partner — how to prompt it correctly to structure code, quickly debug TypeScript type-definition errors, and design with UX in mind.

That day, I truly understood how modern developers multiply their working speed using AI.

Finally, I created a new feature branch (feature/book-reviews) in Suresh's project repository, wrote and tested the code, finalized the schema, and successfully pushed it to the repo to be integrated with their Hono.js/SQLite ecosystem.

分享