# README
Using the Theorem project idea to explore project structure in golang.
Sometime around the end of 2018 I was approached by a company out of Santa Monica called Theorem about a fully remote senior dev consulting position. Back in 2018, that was still kind of unusual, so I pursued it with a passion.
After a lengthy and thorough interview schedule which included code samples, gists for small technical problems, and calls with some very interesting people all over the world, up to and including the CTO in Santa Monica, they still wanted more.
At this point I've spent maybe 1.5 months talking to these guys, and I'm still very interested. My last project had finished up, and I was just itching to end the downtime. Anyway, they came to me with a final task: spend two days coding a solution for some given scenario.
They offered to pay me small fee for my two days of effort and said at the end they'd be able to make a final decision. The task they presented was for a Smart Air Conditioning unit which would update the mother-ship with periodic telemetry data. They needed a device API and an admin web app. There were a number of standard requirements like search capability, some basic alerting reqs, etc.
Anyway you can read more about it in the project spec they gave me.
At the time, I wasn't comfortable enough with Golang to build this in two days, so I reached for C# and gave it my best shot.
Because it's a nice, self-contained project with clear requirements, I later decided to pick it up again and build it out in Golang, as I had originally wanted to do. This repo is the result of those ongoing efforts. After a long hiatus, I've decided to pick this back up and see how far I can get it in my "free" time.
project structure
Golang Standards: project-layout
Medium: standard-package-layout
Medium: structuring applications in go
Applying clean architecture to golang
database
I'm starting to feel like maybe mongoDb is a waste of time... In any case, I think I'd rather dig deeper into PostGRE implementations in golang. Of course this will open a whole 'nuther can o' worms. Which of the million-and-one drivers out there to choose... Use an ORM or not...
PGX: A pure go driver for postgres
All the documentation for PostGRE