Codementor Events

How I built an API based on the game Crisis Core: Final Fantasy VII with Go and PostgreSQL.

Published Jan 29, 2025
How I built an API based on the game Crisis Core: Final Fantasy VII with Go and PostgreSQL.

About me

I am a Lead Full Stack Engineer with over nine years of experience building products across web, mobile, and backend platforms.

The problem I wanted to solve

  1. The game Crisis Core doesn't make it easy to guess the fusion output.

    • The patterns and rules used to determine the fusion output of two materia are surprisingly complex. For example, the output can change if Materia 1 and Materia 2 are interchanged, or if one or both materia are 'Mastered'. These complex rules, when applied to 144 distinct materia, lead to over 280,000 possible permutations!
    • Even trial and error is challenging, as you must first obtain the input materia in the game before you can see what the fusion output might be.
      This API seeks to address both these pain points.
  2. An excuse to learn stuff

    • I wanted to learn Go and PostgreSQL. The prospect of building something practical, useful AND for one of my favourite game series of all time was way more fun than going through yet another YouTube course.
      This will also explain why some of the features of the API feel like overkill.

Tech stack

Golang, PostgreSQL, Google Cloud, CockroachDB

The process of building the API

I've written about I built it in great detail in this Medium article.

Challenges I faced

I've written about the challenges I faced and learnings I had in another Medium article.

Key learnings

This project was the first time I had worked on something for my own use, that took more than a month to build and was published as a product that could be used by others. I have a new respect for people who build entire companies on their own, toiling away for months, maybe years, before it bears fruition. It takes a lot of discipline when you’re the one deciding your own deadlines and breaks.

There were multiple times when I thought “I need to keep going, this has already taken way too long”, or “I can’t figure this out. Should I give up? It was anyway just a nice-to-have on my portfolio”. I don’t want to imagine the anxiety of dealing with these thoughts for months on end.

Tips and advice

  1. Stick with it. It's the hardest part. There will be many times when you feel "this is getting too difficult, is it even worth it?" Trust me, it is. It can be a talking point for the rest of your career with colleagues, with potential interviewers, etc.
  2. Write out your plans. Build a Kanban board. It helps so much when you visualize your progress.

Final thoughts and next steps

This project was incredibly gratifying, not least of all because I myself valued it as an end user. I didn’t care if others weren’t interested in using it. And then there are the other reasons of it being a good showcase of my skillset, it being a great talking point while chatting with other developers, and it giving me a lot to write about.

Discover and read more posts from Ray Mathew
get started