So we’re starting a general contractor company and i I’m wondering if anyone else did that and had general advice? Its with someone else that is not really technology savy.
Currently we’re using:
- WordPress for website
- OpenProject for project related task
- InvoiceNinja for invoice purposes
Any advice and comments would be appreciated!
I’m going to being contrarian, as is my bit.
I self-host everything and fully believe everyone else should too.
HOWEVER, if your self hosted shit breaks for say, 3 days, how much money is this going to cost you?
For business stuff you really really should determine what your backup plan for ‘Oops shit’s dead’ is well before shit’s dead, and honestly, in some cases, maybe it makes more sense not to host everything and have a couple of things that would wreck your business provided by a SaaS company that has a SLA, and on-call engineers, and all that good shit.
Just a thought to keep in mind, I suppose.
I can recommend some stuff I’ve been using myself :
- Dolibarr as an ERP + CRM : requires some work to configure initially. As most (if not all) features are disabled by default, it requires enabling them based on what you need. It also has a marketplace with a bunch of modules you can buy
- Gitea to manage codebases for customer projects. It can also do CI but I’ve not looked into it yet
- Prometheus and its ecosystem (mostly promtail and grafana) for monitoring and alerting
- docker mail server : makes it quite easy to self host a full mail server. The guides in their doc made it painless for me to configure dmarc/SPF/other stuff that make e-mail notoriously hard to host
- Cal.com as a self hostable alternative to calendly
- Authentik for single sign-on and centralized permission management
- plausible for lightweight analytics
- a mix of wireguard, iptables and nginx to basically achieve the same as cloudflare proxying and tunnels
I design, deploy and maintain such infrastructures for my own customers, so feel free to DM me with more details about your business if you need help with this