Learn French vocabulary with this application! (NOTE: I have nowhere to securely deploy this app to, so the development build must be used at this time.)
This web app currently includes the following features to help you learn French vocabulary:
I chose to use Typescript for this project since I've not used it before and wanted to see why it is so highly rated. From this point, Node.js and express seemed like a logical choice for the backend server.
I considered using MongoDB for this project, but ultimately chose MariaDB due to my familiarity with table based schemas. Sequelize provided a great way to connect to my database and perform queries using Typescript, so it made sense to use as well. A copy of my database can be found at the root level of this repository in VocabLearnerFR.mysql, and the testing database is in Test_VocabLearnerFR.mysql at the same level.
Svelte is a lightweight frontend framework that was brought to my attention at the start of July 2022, so I decided to try it out. I likely didn't use SvelteKit (the more "frameworky" set of tools offered) to the fullest extent, but Svelte was a pleasure to use and would strongly consider using it for future projects.
There are many ways to implement sessions, and I ultimately chose to use cookies since this project was initially intended to be hosted. I needed some way to save session data, and chose to use Redis since it was the most downloaded store option available and was highly rated.
To test the API, I use a test database and covered each function across the set of test suites provided. The alternative option would have been to mock the database and test it using these mock functions, but this process seems pointless to me and actually verifying the data is registered seemed like a better option.
If you want to use the application, you're going to need:
There is a lot of setup required, so I've added a short demonstration of the app's features at the end of this Readme if you want to see the features before using it.
Go to both /Server and /frontend and enter npm install (or yarn equivalent) in the terminal in each of those directories to install all of the required packages
Make sure that a Redis server is running locally at port 6379 on your machine and it should be set up after performing all of the installations. If this doesn't seem to work, feel free to contact me and I can help troubleshoot the problem.
Go to /Server and enter npm run start after installing dependencies.
Go to /frontend and enter npm run dev after installing dependencies. Follow the instructions prompted by the terminal to access the web interface.
Go to /Server and type in npm run test to execute the backend testing suite. Currently, all backend functionality is tested except the HTTP endpoints and adjacent content, like some middleware.
There are some features I've worked toward visible in the source code, but are not available yet. They are:
See a demonstration of all the features this app has to offer here.