All Projects → ludolatin → Ludolatin

ludolatin / Ludolatin

Licence: mit
🏛️ An open-source tool for learning Latin

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Ludolatin

Letterboxd recommendations
Scraping publicly-accessible Letterboxd data and creating a movie recommendation model with it that can generate recommendations when provided with a Letterboxd username
Stars: ✭ 23 (+15%)
Mutual labels:  flask
Flask Humanize
Common humanization utilities for Flask applications
Stars: ✭ 26 (+30%)
Mutual labels:  flask
Keras Flask Deploy Webapp
😺 Pretty & simple image classifier app template. Deploy your own trained model or pre-trained model (VGG, ResNet, Densenet) to a web app using Flask in 10 minutes.
Stars: ✭ 856 (+4180%)
Mutual labels:  flask
Hello Ai
AI, Tensorflow, Inceptionv3, AI as a Service, Flask
Stars: ✭ 23 (+15%)
Mutual labels:  flask
Databook
A facebook for data
Stars: ✭ 26 (+30%)
Mutual labels:  flask
Flask Bones
An example of a large scale Flask application using blueprints and extensions.
Stars: ✭ 849 (+4145%)
Mutual labels:  flask
Chronicel
Our super sweet hacker management system, built for HackTCNJ 2017+ | Used by [email protected] 2018!
Stars: ✭ 18 (-10%)
Mutual labels:  flask
Neurodo
A web tool for the analysis of cognitive dysfunction in patient journaling during Schizophrenia clinical drug trials
Stars: ✭ 14 (-30%)
Mutual labels:  flask
Vulpy
Vulnerable Python Application To Learn Secure Development
Stars: ✭ 25 (+25%)
Mutual labels:  flask
Flask Scaffold
Prototype Database driven Web apps in Angular 6, Bootstrap 4 and REST API's with Flask (Python 3 framework)
Stars: ✭ 853 (+4165%)
Mutual labels:  flask
Gpt2 App
A Flask Web App for Generating Text with GPT-2
Stars: ✭ 24 (+20%)
Mutual labels:  flask
Python Flask First Website
Stars: ✭ 26 (+30%)
Mutual labels:  flask
Social Listener
Python project used to collect tweets and social-network data from Social's API
Stars: ✭ 9 (-55%)
Mutual labels:  flask
Fluddy
🤝 A dependency-free command line utility for managing, updating, creating and launching Flask Apps.
Stars: ✭ 23 (+15%)
Mutual labels:  flask
Os
This is the software framework for an OPSORO robot, to be used in conjunction with Ono2 or OPSORO grid and OPSOROHAT.
Stars: ✭ 11 (-45%)
Mutual labels:  flask
Senseme
Python Library for Haiku SenseMe app controlled fans/lights
Stars: ✭ 19 (-5%)
Mutual labels:  flask
Heroku Buildpack Python
The official Heroku buildpack for Python apps.
Stars: ✭ 849 (+4145%)
Mutual labels:  flask
Jaxbin
MathJax and TeX pastebin
Stars: ✭ 15 (-25%)
Mutual labels:  flask
System dashboard
Boilerplate project - Cross-Platform System Dashboard using Flask, React, Mobx and Web-Workers
Stars: ✭ 13 (-35%)
Mutual labels:  flask
Pylogging
🏉 Python Logging Library
Stars: ✭ 9 (-55%)
Mutual labels:  flask

LudoLatin

GitHub issues GitHub pull requests PEP8 gitmoji

LudoLatin is an open-source project to make learning a language free, fun and fast. The official implementation aims to teach Latin, but it is built flexibly enough that any language could be taught, by simply writing yml lesson data to the data directory.

LudoLatin is updated monthly with new features and bug fixes. You can use it on the website.

LudoLatin in action

The ludolatin repository is where I do development and there are many ways you can participate in the project, for example:

Install

virtualenv provides a local install of python, pip, and any installed extensions. If virtualenv isn't already installed, you may need a user with admin privelidges to install it:

[sudo] pip install virtualenv

Now clone this project:

git clone https://github.com/merelinguist/ludolatin.git
cd ludolatin

To create and use a virtual environment in the project directory:

virtualenv venv
source venv/bin/activate

Then install the project requirements in the created venv directory:

pip install -r requirements.txt

Flask requires that an environment variable is set to identify the file to run, and optionally another to enable debugging output:

export FLASK_APP=ludolatin.py
export FLASK_DEBUG=1

You can see your configured environment variables with:

env

You will need to activate venv and set up the environment variables every time you open a new shell. As a shortcut you can run the following:

source setup

In production you also need to create the following environment variables:

FLASK_ENV=production
DATABASE_USERNAME='<someone>',
DATABASE_PASSWORD='<something>'

Database

You'll need a MySQL database. (Other databases will work with some minor code changes (specifically the GROUP BY date SQL queries), but sqlite is not so good with migrations.)

Database configuration

If you are using mysql 5.7.5 or above, you will need to add a line to your my.cnf config file to remove ONLY_FULL_GROUP_BY:

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

If you don't know where that file is, run:

mysqld --verbose --help | grep -A 1 "Default options"

then check each location in turn.

The error that you'll see without this is:

sqlalchemy.exc.ProgrammingError
ProgrammingError: (mysql.connector.errors.ProgrammingError) 1055 (42000): Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'ingenuity_dev.score.created_at' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by [SQL: u'SELECT sum(score.score) AS sum_1 \nFROM score \nWHERE %(param_1)s = score.user_id GROUP BY date_format(score.created_at, %(date_format_1)s) ORDER BY score.created_at DESC \n LIMIT %(param_2)s'] [parameters: {u'date_format_1': '%Y-%m-%d', u'param_1': 18, u'param_2': 7}]

To run mysql without starting it at boot, run:

mysql.server start

Full details on SitePoint.

Database creation

Now that the database is installed and configured, create a database:

mysql -u root -e "CREATE DATABASE ludolatin_dev"

Finally, create the migrations and initialise the database with:

flask db init
flask db migrate
flask db upgrade

Run

To run the app:

flask run

Or, to make the server available to other devices:

flask run --host=0.0.0.0

You will now find the server running on: http://localhost:5000, or for other devices, http://<your_local_ip>:5000

You can also browse the API at: http://localhost:5000/api/ (Note, most of the API is unused.)

To add an admin user, load data, etc. use:

python manage.py <command>

For a full list of commands type:

python manage.py

Flask extensions used

Function Flask-Extension
Model & ORM Flask-SQLAlchemy
Database migration Flaks-Migrate
Forms Flask-WTF
Form validation WTForms
Authentication Flask-Login
Authorisation Flask-Principal
Admin Flask-Admin
Markdown Flask-Misaka
Articles Flask-Blogging
SSL redirection Flask-SSLify
CLI Flask-Script

Other libraries used

Function Library
CSS Bootstrap 4 Beta
JS jQuery
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].