Development of course registration site Tupick
Reason for Creation
I developed a website called Tupick where you can register for classes. The reason for this was that managing space reservations in Excel at meetings seemed inefficient. Initially, there were no major problems, but over time, duplicate reservations occurred frequently, and the problem of multiple people applying for the same space at the same time became serious. To solve this technically, I developed a registration system myself.
This service can be used not only for simple class registration but also for space reservations, making it useful in various situations.
Schedule
It took a total of 1 week from the start of development to completion. The main reason why I was able to develop quickly compared to the scale of the service was thanks to AI assistance. By using the Composer feature of CURSOR IDE to guide the direction of coding, the development time was significantly reduced.
During this process, I spent about $36 (basic subscription fee of $20 + additional fee of $16) on using the CURSOR IDE API, but considering the saved time, it was a worthwhile investment.
Tech Stack
Since SEO is not important for the service, I chose React as the frontend framework. To increase development productivity, I used TypeScript, TailwindCSS, Vite together.
For the backend, I built it using Go and MongoDB, which are lightweight and high-performance.
For CI/CD, I used GitHub Actions to build Docker images, uploaded them to a personal Harbor Docker registry, and then configured them to run on a locally installed server at home.
Using AWS would be more convenient, but due to the high cost, I reset my existing gaming PC, installed Ubuntu on Proxmox, connected a UPS, and operate it.
Service Introduction
Below is an example of a class registration event screen that I created. You can allocate a specific number of participants for each program and share the link to receive applications from participants. It also includes a feature to prevent conflicts due to simultaneous registrations, allowing for stable operation.
Organizers can freely set the data items to be received at the time of registration, making it possible to use it for various types of events. In the example below, it is set to receive only the name, but additional information such as email, phone number can also be received.
Registrant lists can be checked in real-time on the web page and can also be downloaded as an Excel file for separate management.
In addition, by using the replication feature, you can copy existing templates as they are and receive new class registrations. This is a very useful feature, especially when you need to operate weekly recurring class registrations.
Conducting Stress Tests
If a large number of users access the class registration site simultaneously, performance degradation may occur. To verify this, I conducted an HTTP stress test using k6.
- Test Scenario: Increase the number of simultaneous connections to 100 → 500 → 1000
- Result: Although the website was slightly slower, it operated normally without any errors.
I plan to continue optimizing to maintain a stable service even with additional traffic increases.
Closing Thoughts
In the past, it took much longer to develop a single service, and I often easily got tired of repetitive tasks. However, thanks to the advancement of AI technology, these tasks are now much easier.
As an Indie Hacker, I have a goal of operating multiple services. In the past, high server costs and long development periods were obstacles that prevented me from easily taking on challenges. But as infrastructure is prepared and development productivity improves, one by one, obstacles are disappearing.
Although the path to economic independence seemed distant, I am confident that by steadily creating and operating services, that goal will gradually become closer.
