Jonathan Kim
3 years ago - 4 minute read
Getting to design and actively decide which tech will work best for your users can be the most challenging and rewarding parts of growing a company.
Here's Jon, Lead Engineer at Fronted answering question on what runs Fronted, how we decided to use languages like Go and Python, and why this is the best tech stack he's worked on. Let's start from the beginning.
The first step is to look at your company’s purpose.
At Fronted, we’re making the moving process easier by getting people low-cost loans for their deposit. This is the first step in changing the way we move and rent.
We’re taking on quite a complicated and antiquated process. We need a stable stack that allows us to build processes with confidence but also be flexible enough so that we can be creative with new products. We have that direct customer interaction so it’s important that we can create high quality user experiences that will delight our customers.
On top of all that we’re a new startup so we need to be able to deliver quick changes as we find our product market fit. We’ve also got to ensure that we’re moving money safely, and keeping perfect records.
The technologies we’ve chosen mix mature but well maintained frameworks like Django, with modern web-first and api-first front ends like GraphQL, NextJS and Chakra.
We use a little Golang sparingly in our backend to ensure that when we interact with financial services, we do so with statically compiled, strongly typed and strictly limited and reviewed code.
We use a range of tech but the easiest way to split it up is into the two parts:
Part of a finance product is building the business logic and assisting data. In our case this is storing all the data of customers who are applying for a Fronted Deposit and checking it against our prequalification requirements and their financial information.
We use Django, backed by a Postgres DB and exposed through a GraphQL API using Strawberry. This connects to the Next.js frontend.
We’re dealing with a lot of data so the focus is on keeping it together and structuring it well. With Django we’re able to model things quickly and the admin panel gives us power user access to manage our back office processes.
We use Next.js to power our website and application flow. Next.js builds on React and lets us build great user experiences quickly and in a manageable way. We also use Chakra UI to give some great looking accessible components.
Next.js and React allows us to iterate really quickly while still maintaining quality. It’s perfect for us as we’re discovering new products that fit our customers, we can make it without much overhead.
We have to interact with a lot of third party APIs that provide various services for us. Here the focus is on stability and predictability, particularly when we’re working with third parties that deal with money.
Here we use Go. Particularly for the financial aspects of our products, the type safety that Go gives you is more important than speed of development.
The other part of the stack that is interesting is that we’re running everything on Google Cloud Run. Cloud Run just takes any Docker container that responds to HTTP requests and runs it for you with autoscaling and everything. You don’t need to maintain any servers and instead you can focus on using the tools that make sense.
I’ve been coding with JS, React, Python but I had not used Go before starting at Fronted.
There’s two best practice questions:
We’re lucky to have an experienced team, previously from Monzo or Apple, or coming from regulatory and housing sectors. They’ve been exposed to different tech stacks and can come in with a strong opinion on the strengths and weaknesses of different languages. Your team’s expertise is always the best place to start.
The fundamental difference between Python and Go is that Python is a scripted language whereas Go is a compiled language..
Python also doesn’t have the same strict typechecking that Go has. This means you can iterate quickly and be a little messy which works if you’re looking to test things to find what works the best for your users.
Go on the other hand is a strongly written, compiled language. This gives you a lot more confidence that there won’t be errors when the program is running.
Each works best for their format, Python for the user side where iteration is needed and Go for the data storage side where safety and data protection is the focus.
Anyone who likes to build and see the product immediately in the user’s hands.
Those with a solid understanding of Python, Django, JS and React would help to get going quickly. Some awareness of Go and GraphQL is helpful but it’s not a hard requirement as you can learn these parts when working on our stack.
Want to test it out? Try out our pre-qualification flow and let us know in the comments what you think.
Jonathan Kim
3 years ago - 4 minute read
Fronted is a trading name of Fronted Holding Ltd. We are registered in England and Wales (Company No.12278750), registered office address is Fronted, The Fisheries, 1 Mentmore Terrace, London, E8 3PN. Fronted Loans Ltd (Company No.12307305) is authorised and regulated by the Financial Conduct Authority under a Consumer Credit Licence (FCA No. 933316). Fronted Ltd (Company No.12304059) is authorised and regulated by the Financial Conduct Authority under a Broker Licence (FCA No. 933317).
Fronted Loans Ltd and Fronted Ltd is a wholly owned subsidiary of Fronted Holding Ltd. We are part of the FCA regulatory sandbox - Cohort 6. The regulatory sandbox allows firms to test innovative offerings in a live environment. More information on the FCA's regulatory sandbox can be found here.
Made with ❤️ and ☕️ in London