Spanish Vocab Review App
11/22/25
This weekend I had 2 goals for myself:
- Improve my
Djangoskills, both developing and deploying - and build an app that
- is useful
- is more comprehensive than a “todo” app
- can be extended and added on to as I learn more
Djangofeatures
It took me a few hours (hardest part was figuring out the Heroku Procfile) but I successfully put something together that I’m pretty proud of.
- See the live app here: https://spanish-reviewer-app-1edc2efa484f.herokuapp.com/
- and the code I wrote: https://github.com/ayoskovich/Spanish-Review-Tool
It’s basic for now but I have plenty of ideas for additional features to build!
Preview of the app
The main thing it does is let users add vocab words and then link those words to particular examples, here’s the homepage:

And here’s the page where you can create an example and link it to words:

Learnings
I learned a lot putting this together and got more experience:
- Using the
Djangomessaging system to give user feedback when things are updated and deleted - Using the
DjangoORM - Using the class-based view system
- Creating migrations with the CLI
- Auto creating migrations is really straightforward, and I also wrote a custom migration to seed the database from some sample data stored as a
yamlfile
- Auto creating migrations is really straightforward, and I also wrote a custom migration to seed the database from some sample data stored as a
- Styling the application and supporting mobile users using bootstrap
A problem I encountered
I wanted to deploy this so people could actually use the app without having to setup the project on their local machine, but without building a signup / login process I wasn’t sure how to keep users data separate. The internet is a crazy place and I didn’t just want people to be able to see what anyone else had put into the app, so I ended up using session IDs that Django provides in order to separate data.
This does mean that whenever the user’s session expires they lose their data, but this is just a demo app so I decided that was fine. It was pretty simple to test this, to simulate a new session I just went into the devtools and deleted the sessionid cookie and refreshed the page!
Future Work
A few of the next features I have in mind are:
- Consolidate the views
- Right now the page to create a new example is separate from the page where you create a new vocab word, so if you’re studying a single word you have to navigate to a separate page over and over again to add a few examples.
Djangohasinline_formsetsthat would make this pretty easy to do
- Create some way to quiz myself
- I’m NOT talking about flashcards here, I think it would be cool if I clicked a button, the app randomly selected a few different types of words, and then I had to write a passage that included all those words. Then I would be able to see my writing improve over time!
- Manage conjugations
- Right now there isn’t a way to manage the relationship between the “root” word (idk what its called in linguistics) and its conjugated versions, which is a huge part of learning a language.
- I would have to somehow manage the root word, and then manage the different forms like present, past, future, etc.