messa / pyladies-courseware

Homework/task submit and review web app · based on React and Python aiohttp
https://projekty.pyladies.cz/
MIT License
18 stars 26 forks source link
aiohttp aiohttp-server asyncio graphql hacktoberfest markdown mongodb motor nextjs python python3 react relay relay-modern semantic-ui yaml

Pyladies Courseware

Nástroj pro odevzdávání a review domácích úkolů z programování.

CircleCI

Production deployment: https://projekty.pyladies.cz/

Demo (reseted on every deploy): https://projekty-demo.messa.cz/

Todo

Next steps:

Dlouhodoběji:

Viz také issues.

Pokud máte dotaz nebo chcete spustit diskuzi nad některým todo, založte issue (pokud už takové neexistuje).

Architecture

Uses React frontend based on Next.js and Python backend based on aiohttp.server.

browser --> nginx
              - /* ------------> node.js frontend
              - /api, /auth ---> Python aiohttp backend ---> MongoDB  

Why React:

Why Next.js:

Why Python backend:

Why aiohttp:

Why MongoDB:

Requirements

Local Development

Ve 3 samostatných konzolích spusť:

$ make run-mongod
$ make run-backend
$ make run-frontend

Otevři http://localhost:3000/

Port Služba
3000 Node.js – frontend
5000 aiohttp – backend
27017 MongoDB

Při změně kódu Python backendu je potřeba restartovat proces (tj. znovu spustit make run-backend). Pro automatizaci tohoto lze použít nějaký watchdog, např. watch_files.py.

Developer login

Pro usnadnění vývoje na localhostu, je možné (v defaultu automaticky) zapnout tlačítka přihlášení různých rolí.

local dev login

Usage:

# in the backend directory
$ export ALLOW_DEV_LOGIN=1
$ make run-backend

Project structure

pyladies-courseware
├── Dockerfile
├── Makefile
├── backend
│   ├── Makefile
│   ├── cw_backend
│   │   ├── __init__.py
│   │   ├── __main__.py
│   │   ├── configuration.py
│   │   ├── courses.py
│   │   ├── main.py
│   │   ├── model
│   │   ├── util
│   │   └── views
│   ├── requirements-tests.txt
│   ├── requirements.txt
│   ├── setup.py
│   └── tests
│       ├── conftest.py
│       ├── data
│       ├── model
│       │   ├── test_users.py
│       │   └── ...
│       ├── ...
├── data - course, session and task data
├── frontend
│   ├── components
│   │   ├── ALink.js
│   │   ├── CodeEditor.js
│   │   ├── Header.js
│   │   ├── HomeworkComments.js
│   │   ├── ...
│   │   ├── admin
│   │   └── forms
│   ├── package-lock.json
│   ├── package.json
│   ├── pages
│   │   ├── admin
│   │   │   └── users.js
│   │   ├── course.js
│   │   ├── index.js
│   │   ├── lesson.js
│   │   ├── login.js
│   │   └── profile.js
│   ├── static
│   └── util
└── resources - images for README etc.
    └── local_dev_login.png

Poznámky

Nějaký pokus o přepsání domácích úkolů proběhl zde: https://github.com/pyvec/naucse.python.cz/pull/153