Like most developers, I've faced many issues while prototyping, whether it be during a hackathon, or just prototyping to see if a project is worth working on.
While prototyping, the ideal technologies used differ from those in production environments. But it's confusing which ones are truly easier to work with while prototyping, versus which simply appear to be easier. You don't want to pick a technology which is so far removed from the actual application's stack that you spend more time learning something new just for a one time use.
For this reason, I've built a backend starter (https://github.com/neelkamath/backend-prototype) for hackathons or prototypes. It uses languages, libraries, etc. which are easy to use in both the production and prototyping stages where possible. For example, it contains a Docker setup which allows you to easily allow frontend developers to connect to the application while you test your server locally. You can read the explanation on why technologies such as Kotlin, MongoDB, etc. were chosen in this starter.
It's easy to forget the small configurations and gotchas required before being able to use individual tools in a project. Here are a few examples of the caveats the project automatically takes care of for you.
- Databases are usually a waste of time to configure in a hackathon, and are difficult to manipulate quickly when you're tired. The starter uses an easy-to-set-up GUI, and has the required configuration to properly use the free tier of the service so that you don't waste 15 minutes figuring out why something isn't working.
- Prototypes usually use different tools (e.g., programming languages) because there is no time to write wrappers for them. These tools work exceptionally well only in a particular language. The ready-made Docker Compose setup makes it trivial for you to connect any other programming language, DB, etc. when you have to make last minute changes to your plans on which tools to use.
I've used this starter at the last hackathon I went to, and can happily say that this template is "hackathon-ready" 😉.