There's plenty of great todo list applications out there.
Vicci is definitely not one of them.
However, that's not what its aim is.
You see, Vicci started life as what was meant to be a front-end only project to show some architecture examples to a friend of mine. We call him "Vinny", and every time I was writing something to help him the old latin phrase "veni, vidi, vici" ("I came, I saw, I conquered"). The last bit of that, "vici", is where I drew the name for the project. It means "I conquered," and I think that's pretty uplifting of a motto for a list of things that needs to get done.
Once I started to go really hard into the code I realized that it would be nice if there was some kind of user system, so I thought "well I'll just add a Cognito, and that way the user can login and out" but after that I thought "I mean, if the user system is out of the way, what's stopping me from building a simple API?" So... I did.
The result is a project far removed from the "quick and dirty" app that I wanted to start with, and is instead an app in a weird state as of writing this.
The UI is... let's say rough. It wasn't meant to be, but this all started as a way to show off the architecture more than the view. As such, the API is also pretty rough.
That's fine though. It's more a chance to talk about the tech and architecture used in it, specially in the context of a "Serverless" app on AWS.
That all said, let's talk about the tech stack:
- React + TypeScript
- AWS SAM, includes AWS Lambda and API Gateway
- AWS CloudFront
- AWS S3
- AWS CDK
- AWS Certificate Manager (for the SSL certs in prod)
- GitHub as source control version host.
Notice, nothing too outrageous, odds are if you already work in the web right now most of these are things you have at least some experience with. I will (eventually) get to the point where tag pushes to any of the github repos will also trigger a deployment of said resource, but was running into issues and wanted to get this published before my job got busy.
I'm open to feedback from other engineers, and questions from people new to programming in this space. Please create an issue on the corresponding Github repo and I'll address it as soon as I can.
Til then, welcome to the world's worst todo app.