- Integration with more generic (not CERN-specific) directory services (e.g. LDAP) (#129)
- Authentication options that do not require OIDC (Flask-Multipass; needs OIDC support first)
- Integration with Indico (#128)
If you would like to help with any of that, please contact us through the relevant GitHub issue.
Newdle is the new, shiny tool brought to you by the Indico Team @ CERN 🎉 Here at CERN we hold a lot of meetings. While Indico makes it super easy to manage those meetings, we still lose a lot of time 📈 trying to schedule them, which usually involves numerous emails and private messages. That is what newdle has been created for: to streamline the process of choosing the perfect date and time 🗓 for your next meeting/event.
Newdle is part of the MALT project.
It is true that there are already several commercial and Open Source solutions available that facilitate creating "polls". One of them is Doodle which was one of our main inspirations when starting the development process. The biggest advantage of newdle over it is the fact that newdle is free of charge and Open Source - you just have to set it up on your server and you can start newdling! Apart from the commercial products on the market, there is a handful of Open Source projects e.g. Nuages or croodle which differ a lot in the features they offer. We have noticed that the majority of those tools don't provide users with proper User Experience which makes using them harder than it should be. This is one of the major advantages of newdle. We made sure that our tool is easy to use and intuitive with really good-looking design.
Integration
Since we are also the developers behind Indico we thought of integrating newdle with it. So, for example after a poll/newdle has finished it will be possible to create an event in Indico. Also newdle will make it a lot easier to choose possible slots for your meeting since we will integrate it with enterprise calendars to fetch participant availability. While making sure we still protect your data.
We chose Python 3.7 as the backend language, so make sure you have it installed. To prepare the development environment it is enough to run make
which takes care of installing all required dependencies inside a new virtualenv. Typically that will be the .venv
directory unless you override the environment variable VENV
e.g. VENV=.virtualenv make
.
Make sure you have the python3.7
binary in your PATH. You can also use the PYTHON
environment variable to override the location of the
python
binary. e.g.:
$ PYTHON=/usr/bin/python3.7 make
Before running the alembic migrations make sure you have created a database called newdle
(or adjust the config file). Having done that, run flask db upgrade
to upgrade the schema.
At the initial stages of the development it might be pretty common to change the DB schema which also incurs modifications to the SQLAlchemy models. To facilitate the process of keeping actual schema and models in sync we provide make newdb
command. The purpose of it is to update the initial alembic revision (according to the models declared) and recreate your local database. This is a destructive operation! This command will be removed as soon as there are more alembic revisions.
To run the dev servers, use make flask-server
and make react-server
(in separate terminals). You can use the FLASK_HOST
, FLASK_PORT
and REACT_PORT
environment variables to override where the dev servers will listen (make sure to set it for both dev servers, since the React server needs to know where the Flask app is running).
Once everything is running, you can access the webapp on http://127.0.0.1:3000
if you did not change any of the ports.
Use the BROWSER
environment variable if you want to prevent new browser windows being opened every time you run make react-server
.
BROWSER=none make react-server
We provide a couple of additional make
targets that should streamline the development process:
make clean
- removes all generated filesmake distclean
- runsclean
target first and removes config files afterwardsmake lint
- runspycodestyle
andflake8
, which report possible code style issuesmake newdb
- recreates the DB tables according to the SQLAlchemy models (run it every time you update the models)make format
- runs code formatters over the entire codebase (black, isort, prettier)make test
- runs Python and React testsmake build
- builds a Python wheel which then could be used to installnewdle
in production
Made at CERN Take part! |
|
In applying the MIT license, CERN does not waive the privileges and immunities granted to it by virtue of its status as an Intergovernmental Organization or submit itself to any jurisdiction.