A self contained invitation management system for gatekeeping.

Overview

Invitease

Invitease logo

Description

A self contained invitation management system for gatekeeping.

Purpose

Serves as a focal point for inviting guests to a venue protected by guarded gate.

Infrastructure

The project is written in Python with PostgreSQL database on top of Docker.

Web service management is done with uvicorn running FastAPI.

Database access is managed with psycopg2 and SQLAlchemy (Soon alembic implementation will manage the schema versioning). FastAPI template type is jinja2.

First run

The project dependencies are Docker and docker-compose.

  • First clone the project locally.
  • cd into the project folder.
  • Run: docker-compose up -d
  • The app is now accessible using port 8080 in your browser: http://localhost:8080/
  • Voila!

Database

The database schema is automatically generated when the Postgres docker is loaded, the relevant files are in db_init.

Sometimes after playing with the database you may want to start clean.

The database is stored inside a docker volume, configured inside the docker-compose.yml.

In order to remove all the data all you have to do is to remove the volume completely, it will be automatically recreated when docker-compose up is invoked.

Troubleshooting FAQ

Are all the dockers running?

  • Running docker-compose ps will display a list of all the currently running containers

How can I see the application logs?

  • Running docker-compose logs app will display the latest log output from the relevant app container.

Port is inaccesible

  • Every operating system behaves differently but we need to see that 8080 is listening:
    • Linux: netstat -ntlp | grep 8080
    • Mac: netstat -an -ptcp | awk '$NF == "LISTEN" && /8080/ {print}'
    • Windows: netstat -aof | findstr :8080 If it's not there's either a problem with our Docker installation or the relevant definition disappeared from docker-compose.yml.

Made with ❤️ by members and friends of Kibbutz Ma'agan Michael.

Comments
  • default, server_default and creating new invitation

    default, server_default and creating new invitation

    in order for the default values to be inserted from the db when creating a new sql row you need to add default &server_default to the models.py so sqlalchemy can expect the values to be inserted, also i created the restapi for creating a new order

    opened by KamiTzayig 5
  • Went on a Docker diet

    Went on a Docker diet

    Managed to reduce Docker from 943 MB to 402 MB, Please notice that the order of commands have changed and now the pip command is wrapped with apk add above and apk del below, this will ensure the dependencies for building the pip wheels will not be part of the Docker layer so that less space is required (posrgresql-dev is required).

    Also our Snyk score should be improved drastically with this change.

    enhancement security 
    opened by yarons 5
  • Choose a task management platform

    Choose a task management platform

    As suggested by @dangalg in #7 we should try and utilize a task management platform.

    Since we don't really have agile development methodology I'm not sure it's super relevant but we have the following suggestions: Taiga - Open source. Trello - Free but commercial. WeKan - Open source. *GitHub Projects - Closed source, builtin.

    We can also work with assigning Issues to ourselves.

    documentation 
    opened by yarons 3
  • Split to components

    Split to components

    As proposed by both @YBB8201 and @dangalg we would like to split the project into components to avoid collisions and merge conflicts.

    We should first decide what will the different components be and then split the work into subunits and tasks and start working on separate files and branches for each component.

    opened by yarons 3
  • Keycloak is loading very slow

    Keycloak is loading very slow

    The app container is crashing because Keycloak is unavailable while the app was fully loaded.

    Restarting the container several times after a minute or 2 solves that.

    bug good first issue 
    opened by yarons 2
  • Træfik implementation and small usability fixes

    Træfik implementation and small usability fixes

    A fairly complex fix that masks all the services behind a single endpoint that can be diverted upon request.

    Currently we have:

    • invitease.localhost
    • keycloak.localhost
    • dash.localhost

    All of them can be converted to:

    • invitease.localhost
    • invitease.localhost/keycloak
    • invitease.localhost/dash

    Binding these all under the same domain as required by @inbarbarkai

    Closes #40

    enhancement 
    opened by yarons 2
  • creation_timestamp & modify_timestamp missing from event_log

    creation_timestamp & modify_timestamp missing from event_log

    @inbarbarkai I've noticed a small diff between your implementation and the wiki.

    https://github.com/Maagan-Michael/invitease/blob/master/db_init/baseline.sql#L34

    In the wiki we've documented it like this:

    * creation_timestamp - When was this entry created.
    * modify_timestamp - When was the last action performed on this entry.
    

    Not sure if we need it, what do you think?

    opened by yarons 2
  • Switched to original docker, modified seeding script and reorganized files

    Switched to original docker, modified seeding script and reorganized files

    I've changed the docker to the latest one. Reorganized the seeding files (both DB and keycloak). Recreated the seeding script to wait for Keycloak and run in backgroud.

    opened by yarons 1
  • Add a function for descriptive title names

    Add a function for descriptive title names

    In order to maintain readability of the DB structure and produce human readable log we should implement some DB fields conversion in runtime to convert field names such as user_id to User Identification.

    In addition to displaying the data in a readable format it will allow i18n and l10n.

    enhancement 
    opened by yarons 1
  • Create API calls for Administrator

    Create API calls for Administrator

    Log retrieval flow

    Get request that returns:

    • [ ] Events CSV

    Promotion/Demotion flow

    Get request that returns:

    • [ ] Selected users according to search query

    Post request that:

    • [ ] Modifies user level

    Authorization flow

    • [ ] Login
    • [ ] Logout
    enhancement 
    opened by yarons 1
  • Create API calls for Guard

    Create API calls for Guard

    Gatekeeping flow

    Get request that retrieves:

    • [ ] List of active invitations

    Post request that can handle:

    • [ ] Decrease number of invitees number per invitation

    Autorization flow

    Post request that can handle:

    • [ ] Shift start with login
    • [ ] Shift end with logout
    enhancement 
    opened by yarons 1
  • [Snyk] Security upgrade nginx from 1.22.0-alpine to 1.23.2-alpine

    [Snyk] Security upgrade nginx from 1.22.0-alpine to 1.23.2-alpine

    This PR was automatically created by Snyk using the credentials of a real user.


    Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.

    Changes included in this PR

    • web/Dockerfile

    We recommend upgrading to nginx:1.23.2-alpine, as this image has only 0 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.

    Some of the most important vulnerabilities in your base image include:

    | Severity | Priority Score / 1000 | Issue | Exploit Maturity | | :------: | :-------------------- | :---- | :--------------- | | critical severity | 500 | Exposure of Resource to Wrong Sphere
    SNYK-ALPINE316-CURL-3063711 | No Known Exploit | | critical severity | 500 | Exposure of Resource to Wrong Sphere
    SNYK-ALPINE316-CURL-3063711 | No Known Exploit | | critical severity | 500 | Double Free
    SNYK-ALPINE316-CURL-3063712 | No Known Exploit | | critical severity | 500 | Double Free
    SNYK-ALPINE316-CURL-3063712 | No Known Exploit | | high severity | 400 | Out-of-bounds Write
    SNYK-ALPINE316-NGINX-3055742 | No Known Exploit |


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

    opened by yarons 0
  • [Snyk] Security upgrade nginx from 1.22.0-alpine to mainline-alpine

    [Snyk] Security upgrade nginx from 1.22.0-alpine to mainline-alpine

    This PR was automatically created by Snyk using the credentials of a real user.


    Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.

    Changes included in this PR

    • web/Dockerfile

    We recommend upgrading to nginx:mainline-alpine, as this image has only 0 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.

    Some of the most important vulnerabilities in your base image include:

    | Severity | Priority Score / 1000 | Issue | Exploit Maturity | | :------: | :-------------------- | :---- | :--------------- | | critical severity | 571 | Double Free
    SNYK-ALPINE316-CURL-3063712 | No Known Exploit | | critical severity | 571 | Double Free
    SNYK-ALPINE316-CURL-3063712 | No Known Exploit | | high severity | 471 | Cleartext Transmission of Sensitive Information
    SNYK-ALPINE316-CURL-3063713 | No Known Exploit | | high severity | 471 | Cleartext Transmission of Sensitive Information
    SNYK-ALPINE316-CURL-3063713 | No Known Exploit | | high severity | 400 | Out-of-bounds Write
    SNYK-ALPINE316-NGINX-3055742 | No Known Exploit |


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

    opened by yarons 0
  • [Snyk] Security upgrade nginx from 1.22.0-alpine to 1.22.1-alpine

    [Snyk] Security upgrade nginx from 1.22.0-alpine to 1.22.1-alpine

    This PR was automatically created by Snyk using the credentials of a real user.


    Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.

    Changes included in this PR

    • web/Dockerfile

    We recommend upgrading to nginx:1.22.1-alpine, as this image has only 0 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.

    Some of the most important vulnerabilities in your base image include:

    | Severity | Priority Score / 1000 | Issue | Exploit Maturity | | :------: | :-------------------- | :---- | :--------------- | | critical severity | 571 | Double Free
    SNYK-ALPINE316-CURL-3063712 | No Known Exploit | | critical severity | 571 | Double Free
    SNYK-ALPINE316-CURL-3063712 | No Known Exploit | | high severity | 471 | Cleartext Transmission of Sensitive Information
    SNYK-ALPINE316-CURL-3063713 | No Known Exploit | | high severity | 471 | Cleartext Transmission of Sensitive Information
    SNYK-ALPINE316-CURL-3063713 | No Known Exploit | | high severity | 400 | Out-of-bounds Write
    SNYK-ALPINE316-NGINX-3055742 | No Known Exploit |


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

    opened by yarons 0
  • [Snyk] Security upgrade python from 3-alpine to 3.12.0a1-alpine

    [Snyk] Security upgrade python from 3-alpine to 3.12.0a1-alpine

    This PR was automatically created by Snyk using the credentials of a real user.


    Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.

    Changes included in this PR

    • Dockerfile

    We recommend upgrading to python:3.12.0a1-alpine, as this image has only 0 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

    opened by yarons 0
  • [Snyk] Security upgrade nginx from 1.22.0-alpine to 1.23.2-alpine

    [Snyk] Security upgrade nginx from 1.22.0-alpine to 1.23.2-alpine

    Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.

    Changes included in this PR

    • web/Dockerfile

    We recommend upgrading to nginx:1.23.2-alpine, as this image has only 0 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.

    Some of the most important vulnerabilities in your base image include:

    | Severity | Priority Score / 1000 | Issue | Exploit Maturity | | :------: | :-------------------- | :---- | :--------------- | | low severity | 221 | CVE-2022-40304
    SNYK-ALPINE316-LIBXML2-3050523 | No Known Exploit | | low severity | 221 | CVE-2022-40303
    SNYK-ALPINE316-LIBXML2-3050527 | No Known Exploit | | low severity | 221 | Out-of-bounds Write
    SNYK-ALPINE316-NGINX-3055741 | No Known Exploit | | low severity | 221 | Out-of-bounds Write
    SNYK-ALPINE316-NGINX-3055742 | No Known Exploit |


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

    opened by snyk-bot 0
  • [Snyk] Security upgrade nginx from alpine to 1.23.2-alpine

    [Snyk] Security upgrade nginx from alpine to 1.23.2-alpine

    This PR was automatically created by Snyk using the credentials of a real user.


    Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.

    Changes included in this PR

    • Dockerfile.frontend

    We recommend upgrading to nginx:1.23.2-alpine, as this image has only 0 known vulnerabilities. To do this, merge this pull request, then verify your application still works as expected.

    Some of the most important vulnerabilities in your base image include:

    | Severity | Issue | Exploit Maturity | | :------: | :---- | :--------------- | | low severity | CVE-2022-40304
    SNYK-ALPINE316-LIBXML2-3050523 | No Known Exploit | | low severity | CVE-2022-40303
    SNYK-ALPINE316-LIBXML2-3050527 | No Known Exploit |


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

    opened by yarons 0
Owner
מעגן מיכאל
קיבוץ מעגן מיכאל
מעגן מיכאל
Allow you to create you own custom decentralize job management system.

ants Allow you to create you own custom decentralize job management system. Install $> git clone https://github.com/hvuhsg/ants.git Run monitor exampl

null 1 Feb 15, 2022
This is a simple bank management system based on Python.

Python Bank Management This is a simple bank management system based on Python. It's able to do basic operations of simple bank management. Outcome: W

Md. Rakibul Islam 3 Jan 6, 2022
Public Management System for ACP's 24H TT Fronteira 2021

CROWD MANAGEMENT SYSTEM 24H TT Vila de Froteira 2021 This python script creates a dashboard with realtime updates regarding the capacity of spectactor

VOST Portugal 1 Nov 24, 2021
A student information management system in Python

Student-information-management-system 本项目是一个学生信息管理系统,这个项目是用Python语言实现的,也实现了图形化界面的显示,同时也实现了管理员端,学生端两个登陆入口,同时底层使用的是Redis做的数据持久化。 This project is a stude

liuyunfei 7 Nov 15, 2022
Open Source Management System for Botanic Garden Collections.

BotGard 3.0 Open Source Management System for Botanic Garden Collections built and maintained by netzkolchose.de in cooperation with the Botanical Gar

netzkolchose.de 1 Dec 15, 2021
A Company Management System For Python

campany-management Getting started To make it easy for you to get started with GitLab, here's a list of recommended next steps. Already a pro? Just ed

hatice akpınar 3 Aug 29, 2022
MySQL Connectivity based project. Contains various functions of a Store-Management-System

An Intermediate Level Python - MySQL Connectivity based project. Contains various functions of a Store-Management-System.

Yash Wadhvani 2 Nov 21, 2022
Student Result Management System Project in tkinter created based on python, tkinter, and SQLITE3 Database

Student-Result-Management-System This Student Result Management System Project in tkinter created based on python, tkinter, and SQLITE3 Database. The

Ravi Chauhan 2 Aug 3, 2022
User management system (UMS), has the primary purpose of connecting to an Active Directory (AD)

?? Sistema de Gerenciamento de Usuário (SGU) ?? Sobre o projeto Sistema de gerenciamento de usuários (SGU), tem o objetivo primário de se conectar a u

Patrick Viegas 2 Feb 25, 2022
A free and powerful system for awareness and research of the American judicial system.

CourtListener Started in 2009, CourtListener.com is the main initiative of Free Law Project. The goal of CourtListener.com is to provide high quality

Free Law Project 332 Dec 25, 2022
Waydroid is a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.

Waydroid is a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.

WayDroid 4.7k Jan 8, 2023
System Design Assignments as part of Arpit's System Design Masterclass

System Design Assignments The repository contains a set of problem statements around Software Architecture and System Design as conducted by Arpit's S

Relog 1.1k Jan 9, 2023
Web UI for your scripts with execution management

Script-server is a Web UI for scripts. As an administrator, you add your existing scripts into Script server and other users would be ab

Iaroslav Shepilov 1.1k Jan 9, 2023
Simple but maybe too simple config management through python data classes. We use it for machine learning.

??‍✈️ Coqpit Simple, light-weight and no dependency config handling through python data classes with to/from JSON serialization/deserialization. Curre

coqui 67 Nov 29, 2022
Datargsing is a data management and manipulation Python library

Datargsing What is It? Datargsing is a data management and manipulation Python library which is currently in deving Why this library is good? This Pyt

CHOSSY Lucas 10 Oct 24, 2022
🗽 Like yarn outdated/upgrade, but for pip. Upgrade all your pip packages and automate your Python Dependency Management.

pipupgrade The missing command for pip Table of Contents Features Quick Start Usage Basic Usage Docker Environment Variables FAQ License Features Upda

Achilles Rasquinha 529 Dec 31, 2022
Yakuake session management

yman is a python script used for saving/restoring yakuake sessions (currently running commands, working directories, environment variables, tab titles)

Szymon Borecki 6 Jun 25, 2022
Library management using python & MySQL

Library management using python & MySQL Dev/Editor: Pavan Ananth Sharma & MK Akash Introduction: This is an intermediate project which is a user-frie

Pavan Ananth Sharma 2 Jul 5, 2022
Python Service for MISP Feed Management

Python Service for MISP Feed Management This set of scripts is designed to offer better reliability and more control over the fetching of feeds into M

Chris 7 Aug 24, 2022