If you have a great idea but need some help translating that into an app or website, or are looking to improve the user experience of your existing product, I can help you.
If all you need is a simple website, I'll usually choose to build it with Next.js. Next enables me to build highly functional and interactive websites very quickly (using React components), and then deploy them as a static bundle - which saves you hosting costs and provides a faster load-time for your users.
For more complex applications, I prefer to use Node.js or Ruby on Rails to provide a backend API and then create a static frontend application separately that interacts with it.
I find it highly beneficial to decouple frontend and backend development in this way.
I use React pretty much exclusively for frontend work. I start by designing a library of components in isolation using Storybook, allowing for clean testing and reuse.
I then incorporate these components into a static website that communicates with a backend API.
If the API will be consumed primarily by internal services, I often go with GraphQL. This allows me to separate unrelated responsibilities into modules and microservices, and stitch them together into a single schema later on.
For important relational data I use PostgreSQL, while in smaller applications and prototypes I often find it more expedient to choose MongoDB.
I strongly recommend Redis for key-value storage, and for time-series data such as metrics I suggest Prometheus.
Whenever possible, I recommend a container-based serverless deployment such as Zeit Now.
However, I have also built complex environments using Chef, Consul, Docker Swarm, and more. Every organization has different needs.
Everyone has their own style, and a successful relationship depends on finding the right match. When I am engaged in a project, here is an idea of what you can expect.
It all begins with a friendly chat about your requirements. If we decide to proceed, we will outline the project into one or more phases with concrete milestones.
I will create a human-readable, surprise-free contract to protect both our interests as we move forward. This may take up to three days before work can begin.
Ongoing communication will occur in a private chat room where you can keep an eye on our progress and ping me with questions any time.
I always charge hourly, and always round down. You will receive an automated invoice each Friday.
Untested code is broken code. To guard against unexpected disaster, all builds will be continuously verified before a change is deployed.
You can pay your invoices securely online with a credit card or bank transfer.
Reminders will be sent out at five, ten, and twenty-one days. After a third reminder, your project will just be on hold until the balance is settled.
A project rarely just ends once the work is complete. For a small maintenance fee, I will remain available at the original rate for the occasional change.
I will also continue to monitor your application's stability and keep you informed of upcoming issues that may impact your business.
I offer a significantly lower hourly rate for registered charities, open source projects and anyone who paid their last invoice in under five days.
You legally own any work created up to the last invoice paid, and can leave any time. All configuration, code and assets exist in a Github account controlled by you. Domains, SSL certificates and third party accounts are always in your name.