Working on Geola has taught me a lot about creating a full stack project. Not only does it involve a frontend, backend, and database, but it also integrates with APIs and has a rich dashboard.
The premium-grade Discord bot
Integrating with Discord
Geola is written using discord.js, a library that makes it easier to interact with the Discord API. Logging in to the online dashboard is also handled by Discord using OAuth.
The dashboard is the bulk of the website, and it's where users can customize the bot to their needs. React components have proven to be especially useful while building the dashboard since it makes reusing custom inputs easier and more convenient.
I use MongoDB for a data storage solution since its document-based structure fits into the object-oriented nature of the project. The fact that data is stored as an object makes it easy to query data, even if it's nested. I also use Mongoose since it implements schemas while also making interaction with the database a lot easier.
Geola runs on an Ubuntu server hosted on DigitalOcean. I use PM2 to manage processes since it's basic yet customizable. Since I have multiple projects on my server, I use Nginx server blocks to route traffic to the correct express server for the website and Let's Encrypt to secure my website with an SSL certificate.