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
Geola is a Node.js application that's hosted on DigitalOcean. The website is written in React and Next.js, and the backend is an express server. MongoDB is used for data storage, since its document-based structure is convenient for my use case.
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 Docker to manage processes since it's powerful yet easy to use. 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 Cloudflare to secure my website with an SSL certificate.