Answers (1)
Askizo has two main components: the front end and the back end.
The front end is built with Nuxt.js, and the back end is built with Spring Boot.
Why these two technologies?
The answer is simple: because that’s what I know 🙂.
That said, the choice of Nuxt deserves a little more explanation. Nuxt provides server-side rendering (SSR), which is important for SEO (not that I’ve implemented SEO yet, but I plan to in the future). From what I’ve learned, rendering a page on the server tends to give better client-side performance than rendering it entirely in the browser. Since I was already familiar with Vue.js, Nuxt was the natural choice.
As for Spring Boot — well, I just think it’s the best backend framework there is. I haven’t tried many others (and don’t intend to yet), but as a long-time Java enthusiast, it was the obvious choice for me.
Of course, there’s also a database: a PostgreSQL instance. No special reason for choosing it other than the fact that it’s a reliable industry standard.
On top of that, there’s Elasticsearch. Askizo stores question titles in an Elasticsearch index to provide fast and fuzzy search in the top search bar.
In the production environment, there’s also Nginx, acting as a reverse proxy. Everything else sits behind it, for all the good reasons: security, SSL/TLS termination, request routing, and so on.
For administration, I use pgAdmin for PostgreSQL and Kibana for Elasticsearch.
All of these components live inside a Docker environment, with each running in its own container. The whole setup is deployed to a VPS.
Here’s a diagram that gives a bird’s-eye view of the application’s structure:
This structure isn’t final. As I add new features or make infrastructure changes, I’ll describe them in future posts.
Write your answer: