Phrasebook web application written in Python, using Django
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Phrasebook is a WIP Web Application that can assist users in learning a language. I created this when I started learning French, in order to have a neat, centralised place which I could store my vocabulary. It also allowed me to learn new approaches for implementing the backend of the system, instead of the typical PHP based applications I had learnt previously on my own and within university modules. There were no specific target users, but it can be used by anyone that wants to store vocabulary they learn during any kind of language study.


Originally Phrasebook was written in JavaScript using Node.JS, the version of which can be found here. After creating most of the features necessary, I decided to learn how to use another backend framework, Django, written in Python. This version of the webapp should be feature-wise upto date with the Node.JS version, and have small extra features and changes to styling in it.

The Database system has also changed, going from the NoSQL database MongoDB previously (as can be found in the old version linked above) to a relational database, PostgreSQL.


The main dashboard. Upon logging into the site, the users land here, and this displays their recently added words alongside their translations. The sidebar then gives access to the other parts of the site. Main Page

The categories list. In order for users to sort their phrases, they can create categories, to make the browsing and access of their phrases quicker. As shown below, a good use of categories is when languages, such as French, have different kinds of verbs (shown below as ER, RE and IR verbs). Categories Page

List of words in a category. The user is able to view all words that they have assigned to this category, with the ability to add more through the button at the top, alongside pinning the category, to allow for quick access on the sidebar. The user can also search through their words, in order to quickly find the word they are looking for. Word Page

Support for multiple languages. Since not everyone just learns French, currently there is support for German, Spanish, Italian and Irish, with the ability for more to be added easily at a later date. Languages are kept separate from each other, so words and categories in separate languages cannot conflict with one another. Language Selection

The login page. This is a basic page where the user can login to the system, or using the button in the top right, create an account in order to use Phrasebook. login

Shareable links are now added, so you can share word lists with other people! Shareable Links

An XP System has now started to be created.

XP System

Changes from Node.JS Version:

  • Added XP System (WIP)
  • Added Word Editing
  • Added simple text section for each category to store any extra notes
  • Added shareable links


  • Add more XP system functionality
  • Add test functionality
  • Allow for editing user details
  • ...
  • Add email functionality