Luna

A Discord bot that provides a wide range of moderation tools, including auto-moderation, logging, and more.

A screenshot the web interface of the Discord bot
A screenshot of the game as of 2022

Role

Developer

Team

Solo project

Date

2018 - 2020

Context

Discord is a popular platform to communicate and interact with each other. It's also a great place to share and discuss ideas, to build a community around a common interest.

Discord offers a powerful API that allows developers to create programs capable of interacting with the platform, reading / sending messages, getting information about users, and more.

I embarked on the development of Luna as a means to delve deeper into Node.js and the Discord API. My aim was to craft a bot capable not only of responding to fundamental commands but also providing distinctive and valuable features to enhance the overall experience. This encompassed functionalities ranging from moderation to activities, games, music, and more.

Technologies

Luna was crafted with Node.js and the Discord.js library, hosted on Railway.

The database employed MongoDB, utilizing Mongoose as the ODM for optimal handling of extensive data and rapid, efficient responses. Rediswas implemented for caching purposes.

Additionally, Luna integrated various packages, including Moment.js, Axios, Cheerio, and more.

The dashboard was developed using Next.jswith Tailwind CSSfor design aesthetics. Authentication was facilitated by NextAuth.js, complemented by shadcn/ui for the UI components.

Rise and Fall

Luna was my first *big* project using Node.js and the Discord API. It was a great learning experience and a lot of fun to develop. I learned a lot about JavaScript, Node.js, and the Discord API.

The project was a success; Luna was open source, available to everyone on Github, and I am proud to have successfully created a bot that was used by over 2000 servers and employed by just over 150,000 people. However, this had some consequences that I hadn't anticipated.

The bot was growing in popularity, and with that came a lot of requests for new features and support. I was a one, and I couldn't keep up with the demand. I was also a student at the time, and I had to make a decision. I decided to stop the development of Luna and focus on my studies.

I also noticed a, "downside" of the open source. I dedicated a lot of time to perfecting every interaction with Luna down to the smallest details. However, as Luna gained recognition, it was simply copied without credit, despite the license. What's worse, some features were taken and monetized by others. This made me a bit sad and affected my motivation.

The last straw was the cost of hosting. Luna was growing, and the cost of hosting was increasing too. I was a student, and I couldn't afford it.

Thanks

Luna was a great project, and I am proud of what I achieved. I learned a lot, and I had a lot of fun.

This project is now in the past, but I will never forget the enthusiasm of some and the participation of others. I thank those who have, at some point, added either a small star on GitHub or a few lines in Luna's codebase.

I made the mistake of setting the GitHub repository to private, resulting in the loss of all its stars.

However, its code and what we achieved together will forever remain in the GitHub Arctic Code Vault.