-
"the code":
- https://git.dee.kitchen/buro9/microco.sm landing site
- https://git.dee.kitchen/buro9/microco.sm-bootstrap styles
- https://git.dee.kitchen/buro9/microcosm main API and database
- https://git.dee.kitchen/buro9/microweb Django web ui
- https://git.dee.kitchen/buro9/microweb-bootstrap styles
Yes, the Python is that old... no it's not Python 3, no I don't know how to upgrade Django, if and when it needs surgery I would now do so on the production server... I don't know how to deploy any longer.
The Go code is where all the changes really happen, deploying that is a bash script that does an scp of the single binary.
Oh, and technical things.
- The software is fully open source under AGPL.
- The database is PostgreSQL
- The website is a very old version of Django (no longer supported, difficult to install)
- The API and the bulk of the site is Go
- A load balancer and cache is implemented in nginx <-- the Nginx config is not in source control but does a lot of lifting so probably needs to be in source control.
- Attachments are stored in S3 compatible object storage
- Email is sent via Twilio/Sendgrid
There are 3 servers that do the majority of things:
- LB = Load balancer and cache
- WPY = Web Python runs Django
- API = Go backend and the database
To reduce costs it is actually just 3 main servers, but each slightly beefier than they need to be... I found this more cost efficient a few years back so turned off the others... but it's easy to clone to scale horizontally if ever needed
The servers make use of
iptables
to ensure that only they can talk to each other and that nothing else can talk to them.Then we use external services to run other things:
- Object storage is Linode
- Email is Sendgrid with dedicated IP address
the servers all run Linux, some of it is old (the Django server runs an old Ubuntu from a decade ago), and some of it is new (the LB runs a modern Debian, the API a modern Ubuntu).
all work is done via the command line when needed... probably less than an hour per week.
if a team of technical people formed, I would teach them how it's organised and grant access, etc.
- https://git.dee.kitchen/buro9/microco.sm landing site
-
The website is a very old version of Django (no longer supported, difficult to install)
I could probably put together a React version. SPA, client side rendering which interacts with the api directly
I’d started taking a look a few months ago, somewhat inspired by @cyclotron3k Android app
Happy to contribute, python developer with some infrastructure experience (I think I remember seeing there was a move to Golang recently, but code is code)