3 ms·
Spot on, friend. So recently I started writing a simple web application for my family. They send emails to each other with gift wish lists in them and we all h
by movedx 8y ago
Spot on, friend.
So recently I started writing a simple web application for my family. They send emails to each other with gift wish lists in them and we all have to juggle those emails around. I figured some products would exist already to solve this problem, but I wanted to make my own.
When it came time to make it I thought: "This has to be a REST API with a JS front end" and then further down the line, "Man I should use Flutter and only make it a mobile app!" I had other thoughts about making it Serverless and doing $thisCoolThing and using $thatNewTech. In the end nothing got done at all.
Fast forward to today and it's a monolith Go application that renders Bootstrap 4 templates server-side, serves some static CSS directly, sits on a single server (DigitalOcean) and uses a single PostgreSQL instance (on the same server). The Bootstrap 4 CSS and JS come from their CDN.
I made the technology simpler and the job got done. It's an MVP with basic database backups in place, using Docker to deploy the app. It just works.
Lessons for me from this:
* Server-side template rendering is perfectly fine and actually easier, frankly
* JS can still be used client-side to improve the experience without replacing the above or making the entire rendering process client-side
* Although Go compiles to a single static binary I still need other assets, so it went into a Docker container for the added security benefits not to mention portability
* Serverless is nice, but unless it's replaced the above day-to-day, there's always a steep learning curve around something you haven't done with it yet, but need
* Picking the latest and greatest tech tends to stagnate progress or halt it entirely, in most cases
* An a software MVP needs an MVP infrastructure to go with it
Just my thoughts.
- Enginerd3 8y ago"I figured some products would exist already to solve this problem, but I wanted to make my own." But why? You could've used so many different products. You could've even used Google Docs.
- movedx 8y agoThere's a bit more to the story than simply solving a problem. I have other plans for the software and we have ideas about how we want to move it forward. One of the key features is being able to "tag" an item on someone's wish list as "bought" or "buying". This allows others viewing the list to know that item has been taken. But there's also a requirement that the original author of the list/item cannot see that it has been bought otherwise there's no element of surprise for them come time to open the gift(s) :-) Spreadsheets don't enable that privacy/secrecy.
- Enginerd3 8y agoStill, I highly doubt that there are not any apps that do this already. I mean, my family uses Amazon wish lists and set it so that you can't see when stuff is purchased.
- movedx 8y agoLike I said, it goes beyond just solving the problem. It's a learning exercise as well as a solution. Have you never wondered what projects you can write to help you learn X or Y?
- ngrilly 8y agoIs there a short downtime when you deploy new versions of the Go application? Is the Go application directly exposed to the Internet?
- frankzinger 8y ago> so it went into a Docker container for the added security benefits Which are? Last I heard containers (with baked-in dependencies) were generally considered very bad for security because the dependencies never get updated.
- pR0Ps 8y agoI'm interested in something like this - is the code publicly available?