Inspiration
As a DM, I have seen a big issue with having too many tabs open on a browser for all sorts of applications. Such as music, dice rolls, stat blocks, etc. The inspiration for DND Assistant hopes to eliminate the overwhelm of so many tabs by having it all in one cohesive app that allows a DM to worry less about logistics and more about running a great session.
What it does
Our application can create and store statblocks made personally by the DM through a forum that allows for almost any creature in one's imagination to be made. The app can query an audio API to return a variety of sounds, such as music and ambient noises. The app also has a built-in dice roller for every dice a DM would need.
How we built it
We built our app using both a back end coded in Python and a front end coded in JS and HTML. The backend uses FastAPI to send functions and queries to the front end. We then used MongoDB to store any data saved by the application.
Challenges we ran into
One of the challenges we faced was the proper usage of the sound API. The query responses were confusing, and it made it hard to structure how we searched and stored the files. Then we learned you can't store MP3 files in a DB and that we had to encode them, which had its own unique set of challenges because the decode process would break the file. Another challenge we faced was as a group understanding how FastAPI works. Much of the documentation was confusing and unclear, and much of the time we spent was getting it to actually function. It was also an arduous process to make sure the front end properly functioned with the back end.
Accomplishments that we're proud of
One of our biggest accomplishments was making the sound system we designed actually work. i.e., sending the encoded file to a DB, then decoding it when desired into a functioning MP3. Another big achievement is the design and implementation of the front end, which looks very pretty. Also, with the frontend getting a statblock forum that queried the backend to allow a customizable statblock. Finally, our application closely matches our original idea, and we successfully managed to get most of what we wanted into DND Assistant.
What we learned
We learned a lot about FastAPI. API queries in general, like freesound and PyMongo. We learned also how to use and manage a database for a group project.
What's next for DND Assistant
Fleshing out the functionality with a mixture of feature fine-tuning and debugging, specifically between queries from the front end to the back end. Also, potentially using a different API from freesound to have a higher variety of sounds and music. Also adding a section for a DM to write notes within the application.
Built With
- base64
- fastapi
- freesound
- html
- javascript
- mongocompass
- mongodb
- pymongo
- python
Log in or sign up for Devpost to join the conversation.