This web app is the platform that is used to bring the well known format of integration bee 🐝 to Vienna starting from Mathematical faculty of Uniwien
Integration Bee is an integral calculus competition pioneered in 1981 by Andy Bernoff, an applied mathematics student at the Massachusetts Institute of Technology (MIT). Later the Idea was implemented in different universities and high schools and now comes to Vienna!
The purpose of this app is to provide information for competitors, to sign up for the competitions, to see your ranking and profile, also the progress of the competitions will be posted live using tournament tables. For admins of the platform this app allows to manage the news, events, place information for users, see users and for which competition have they signed up, to create tournament brackets, to store the integrals in the integral library and to have a variety of tools that make the competition possible.
the app is available under the address www.integrationbee.at
Please Note that the app is still under development, star this repo and follow me to see updates.
In current version this app is separated in two parts responsible for frontend and backend
Python >=3.11.1 pip >= 24.0 nodeJS >= v20.8.1 yarn >= 1.22.19
this app is a Single Page Application (SPA) therefore it is powered by Vue 3 + Vite and separated from the backend, since Django does not provide support for SPA*. For styles is used SASS, since it provides Awesome Style Sheets.
*The first versions of the application were written directly inside Django using Vue cdn distribution linked as an tag in a template, but this way is not a good practice, hence the app is now built separately
Backend is built with Django (Wagtail + Django Rest Api) and serves as both API and CMS.
Django is a flexible Framework that allows to easily connect to any database, in current version we use sqlite for development and MySQL for production.
since the Application is separated in the backend and frontend parts, we need a way
to serve frontend related files such as templates and static files directly from django
server, to do so we have a command in django python3 manage.py fetch_frontend_files
if the path to the dist
folder in the frontend directory is set correctly, then
the files will be moved to the home
django app in templates and static folders with
some changes making it possible for the frontend to have access to the django static files.
We want to serve everything together as one application deployed with the same provider, so files should be accessible from django, however We also want the benefits provided by Vite and its development server allowing for fast frontend development and Vite does not have needed rollup flexibility as for example webpack has, therefore the previously described method is simple and effective enough to make this goal possible.
- in the folder with manage.py file, fetch the frontend files as described earlier
- connect to your database by modifying settings in Django
- in the folder with manage.py file apply migrations with
python3 manage.py migrate
- in the folder with manage.py file run
python3 manage.py collectstatic
- in the folder with manage.py file run
python3 manage.py runserver
- Congratulations, your app is running!