Giter Club home page Giter Club logo

cluster-tagebuch's Introduction

Cluster-Tagebuch

Aus den Stores entfernt

Nach ca. 1400 Downloads im App und Play Store habe ich die App 'Cluster-Tagebuch' aus den jeweiligen Stores entfernt, da man als individual developer keine Covid-19 relevanten Apps veröffentlichen darf.

Screenshots

Dokumentation

Datenbank

Die hinzugefügten Daten werden in einer lokalen SQLite Datenbank auf dem Smartphone gespeichert. Folgende Flutter Packages werden dazu verwendet:

Das Schema und die CRUD-Operationen sind im File sqflite_service.dart definiert.

Datenbanktabellen / Schema

Die Datenbank enthält folgende vier Tabellen:

  • clusters

    In dieser Tabelle werden alle Cluster, die der Nutzer anlegt, abgespeichert.

    id name ort anzahlpersonen datum
    1 Mein erstes Cluster Eschweiler 8 012345678909
    • id => PRIMARY KEY und AUTOINCREMENT;
    • datum => Millisekunden seit Unix Epoch
  • Contacts

    In dieser Tabelle werden alle Kontakte, die der Nutzer anlegt, abgespeichert.

    id vorname nachname strasse ort plz telefonnummer adddatum
    1 Peter Schmidt Haupstraße 10 Eschweiler 52249 01234567890 10987654321
    • id => PRIMARY KEY und AUTOINCREMENT
    • adddatum => Millisekunden seit Unix Epoch
  • qrontact

    In dieser Tabelle werden die Kontaktdaten abgespeichert, die für die Erstellung des QR-Codes genutzt werden.

    id vorname nachname strasse ort plz telefonnummer adddatum
    1 Peter Schmidt Haupstraße 10 Eschweiler 52249 01234567890 10987654321
    • id => Always 1
    • adddatum => Millisekunden seit Unix Epoch
  • clusterhistory

    Diese Tabelle dient als Junction-Table, um eine Relation zwischen Cluster und Kontakten zu ermöglichen.

    id clusterID contactID
    1 2 3
    • id => PRIMARY KEY und AUTOINCREMENT
    • clusterID => FOREIGN KEY REFERENCES clusters(id)
    • contactID => FOREIGN KEY REFERENCES Contacts(id)
INNER JOINS
  • Um alle Kontakte zu erhalten, die einem Cluster zugeordnet sind, wird folgende Query ausgeführt:
SELECT Contacts.* FROM Contacts INNER JOIN clusterhistory ON Contacts.id = clusterhistory.contactID WHERE 
clusterhistory.clusterID = ? ORDER BY Contacts.nachname, [clusterID]);
  • Um alle Cluster zu erhalten, die einem Kontakt zugeordnet sind, wird folgende Query ausgeführt:
SELECT clusters.* FROM clusters INNER JOIN clusterhistory ON clusters.id = clusterhistory.clusterID WHERE
clusterhistory.contactID = ? ORDER BY clusters.datum DESC, [contactID]);
  • Um alle Kontakte zu erhalten, die einem Cluster zugeordnet und nicht älter als 14 Tage sind, wird folgende Query ausgeführt:
SELECT DISTINCT Contacts.* FROM Contacts INNER JOIN clusterhistory ON Contacts.id = clusterhistory.contactID INNER JOIN clusters ON clusterhistory.clusterID = clusters.id  WHERE clusters.datum >= ? ORDER BY Contacts.nachname,
[DateTime.now().add(Duration(days: -days)).millisecondsSinceEpoch],);

Lokale Benachrichtigungen

Zur täglichen Benachrichtigung werden folgende Flutter Packages verwendet:

QR-Code

Zum Scannen und Erstellen von QR-Codes werden folgende zwei Flutter Packages verwendet:

URL Launcher

Zum Öffnen von Links wird folgendes Flutter Package verwendet:

Liste und Suche

Zum Erstellen von Listen und zum Suchen werden folgende zwei Flutter Packages verwendet:

Adressbuch Import

Zum Importieren von Kontakten aus dem Adressbuch werden folgende zwei Flutter Packages verwendet:

PDF-Report

Zum Erstellen des PDF-Reports wird folgendes Flutter Package verwendet:

cluster-tagebuch's People

Contributors

moritzwettig avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.