Code Monkey home page Code Monkey logo

flashcards's Introduction

FlashCards

Build Status

Software team project with a goal to develop a multiplatform (i.e. web & android & iOS) flashcards learning app.

Contributing

Spotted an error? Something doesn't make sense? You have an excellent idea? Open an issue, but please, don't submit PRs. This project is curently developed as a part of software team project at the Faculty of Information Technology, CTU, so we will not accept your PRs.

Getting Started

The project has been written in Dart with AngularDart and Flutter frameworks. This makes project setup very simple. This project contains from 3 separate sub-projects—for common shared stings, AngularDart and Flutter.

For either AngularDart and Flutter you need the Dart SDK & package manager and you have to download dependencies in the bussiness logic project (common/) using pub get command.

Make sure you have Dart 2 installed (dev channel).

To set up AngularDart project, you have to move into angular/ directory and run pub get command to download all dependencies.

To run the project, you can simply use the pub run build_runner serve command. For more options on how to run the project, check the Angular README.

To set up Flutter project, you will need some prerequisites, i.e. the Flutter SDK—for running the mobile app—and the Android emulator, iOS emulator or a physical mobile device. Make sure you are all good with Flutter using the flutter doctor command.

To run the project, you can simply use the flutter run command.

License

Licensed under the MIT License.

flashcards's People

Contributors

danbalarin avatar malejgaz avatar michaldrabina avatar stasidom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flashcards's Issues

Navigation

The task is to create a custom navigation / app bar / drawer. On the mobile, there will be navigation inside of the drawer, but also there will be the app bar. On the web, there will be navigation inside of top panel (maybe fixed?).

Take an inspiration at https://sergiandreplace.com etc.

  • Flutter
  • Angular

Article: project with Flutter and AngularDart

Write down a small article (maybe also publish on Medium?) about our time with Dart, AngularDart and Flutter and about our way—BLoC—with code sharing between AngularDart and Flutter.

  • to wiki
  • to Medium
    • share on Twitter
  • English correction

Screen orientation

We have to set the app so it can be rotated. (it may be default, but we should set it explicitly, but only if the user didn't forbit it) only allows the portrait mode.

  • Android
  • iOS

Use the #33 branch for commiting.

Explore "BLoC"

In this video from the DartConf, one of the spokesmans was saying about this "BLoC" – Bussiness Logic Component, which has really pedantic rules to follow, but provides us a nice way how to separate a logic of an app from views (angular, flutter).


BLoC designing guidelines:

  1. Inputs and outputs are simple Streams/Sinks only
  2. Dependencies must be injectable and platform agnostic
  3. No platform branching allowed
  4. Implementation can be whatever you want if you follow the previous rules

UI design guidelines:

  1. Each "complex enough" component has a corresponding BLoC
  2. Components should send inputs "as is"
  3. Components should show outputs as close as possible to "as is"
  4. All branching should be based on simple BLoC boolean outputs

TL;DR

  1. Move bussiness logic to BLoCs
  2. Keep UI components simple

The task is to explore the video, try to underestand the concept and make some example app with this.

About page

Create about page with details, creators and links etc.

Design deppends on #28 and #29.

On mobile, the button to get there might be in a drawer.

  • Web
  • Mobile

App theme and color palette

We should make global theme for buttons (primary, secondary, active, disabled, etc), texts, and unify all views.

Color palette should be common, theme will be different for web and mobile.

Analysis of requirements – uc model

  • katalog požadavků (Extended-Requirements)
  • diagramy případů užití (UML Behavioral-Use Case)
  • popisy případů užití
  • detailní rozpracování scénářů „hlavních/zajímavých/důležitých“ případů užití - případy užití, které přímo podporují hlavní činnost zákazníka (minimální počet takto rozpracovaných případů užití je dán počtem členů v týmu). Takto detailně rozpracovaný případ užití by měl obsahovat hlavní scénář, alternativní scénáře, případně vazby include a extend na okolní případy užití
  • seznam účastníků
  • mapování případů užití na požadavky

Design model of classes

návrhový model tříd - detailní popis softwarových tříd spolupracujících na realizaci implementovaných případů užití z druhé iterace. Oproti doménovému modelu musí být digram tříd minimálně doplněn o:

  • datové typy
  • směry asociací
  • přiřazení zodpovědností (metod)
  • nové třídy umožňující dodržet navrženou architekturu
  • způsob persistentního ukládání objektů
  • zobrazování dat uživateli
  • způsob zpracování uživatelských vstupů

atd.

Web landing page

Create a landing page, containing some initial logo and then some transition to logo + login. If the user is already logged in, then move to next page.

The design of this depends on #29.

Settings page

Create settings page.

Design deppends on #28 and #29.

The settings have to be stored through common package to database.

  • Web
  • Mobile
  • BLoC

Routes from drawer should keep state

Expected behavior

When clicked on button in drawer, it should reopen the old, already used, route. If that is possible?

Actual behavior

Opens new route on top of everything.

Steps to reproduce the behavior

Set up CI/CD

@Kenny11CZ We should decide what CI/CD app to use.

I vote for Travis CI, since it's open source and we can use it unlimited until eternity. But I know you wanna try out the TeamCity. What about use both? We will set up Travis CI and connect it to GitHub pull requests etc. and you can set up TeamCity to this public repository (will be) and test it out? :-)

Practise page

Create practise page with type-of-practise choosing, rounds, points, ...

Design deppends on #28 and #29.

* [ ] Web

  • Mobile
  • BLoC

Search page

Create advanced search page which could be able to search courses and users (?) by name, description or so.

Design deppends on #28 and #29.

  • Web
  • Mobile
  • BLoC

Database model

  • databázový model - diagram tříd (UML Structural-Class)/alternativně detailní popis rozhraní, které bude používáno pro načítní/ukládání dat, pokud aplikace nemá vlastní databázi
  • primární klíče
  • cizí klíče
  • datové typy
  • dekompozice m:n vazeb

Logical architecture design

  • zvolené technologie (frameworky, knihovny, principy) pro:
    • uživatelské rozhraní
    • persistenci dat - zvolený způsob persistentního ukládání musí zajistit, že se nikdy nebudou používat
    • názvy tabulek a názvy jejich sloupečků v kódu jinde, než v datové vrstvě.
    • provázání balíčků/komponent - IoC
  • rozdělení systému do balíčků (logických celků) - diagram balíčků v kontextu zvolené technologie (UML Structural-Package)
    • minimálním požadavkem je oddělení prezentační vrstvy od zbytku aplikace tj. alepsoň dvouvrstvá aplikace

Summary about technology selection

Write down the reasons why we have chosen our technologies and why we preferred them to others.

  • Dart
  • Flutter
  • AngularDart
  • Firebase/Firestore (#2)
  • GitHub
  • Discord (communication app)

Analysis of business processes

  • diagramy aktivit (UML Behavioral-Activity)
  • textové popisy procesů
  • přeorganizovat wiki aby vše dávalo smysl (procesy, požadavky funkční & nefunkční)

Vše dávat na wiki.

Mobile wireframes

Depends on #14.

Create wireframes for mobile app based on analysis of requirtments and description of use cases.

  • wireframes
  • wiki description

Make i18n how to file

Just make internationalization tutorial, so everyone will know what files are related to that and how to translate stuff...

Deployment

instalační příručka - diagram nasazení (UML Structural-Deployment)

Landing page

Create a landing page, containing some initial logo and then some transition to logo + login. If the user is already logged in, then move to next page.

The login needs to be stored both locally and to firebase. Take a look at #2 #11.

The design of this depends on #28 and #29.

  • Mobile
  • Web
  • Logging

Web wireframes

Depends on #14.

Create wireframes for web app based on analysis of requirtments and description of use cases.

This is harder than mobile app wireframes (#28), 'cause we have free hand with the design and placement of things on screen.

  • wireframes
  • wiki description

Finish the concept

Make sure, that whole concept is implemented in MindNode scheme, documented and consulted with the team.

  • All components in scheme
  • All components documented
  • Consulted with the team

Title screen animation bug

Check if sign in button always shows up in production build, because in development it sometimes don't.

Also, when the button appears flashcards logo kind of jumps few pixels up. Could be fixed by setting flashcards logo to be always in middle, absolute position, or by inserting transparent placeholder for button with the same height.

Loading component

We should create loading component (Spinner with text or something like that), so we have consistent loadings across whole app.

Behavioral sequence

realizace případů užití (model komunikace) - sekvenční diagramy (UML Behavioral-Sequence)
popis komunikace softwarových tříd při realizaci implementovaných scénářů případů užití z druhé iterace

Set up the repository

Set up the GitHub repository.

We can omitt Code of Conduct and Contributing guidelines because we do not allow to contribute to external people for now.

Flutter errored in Travis CI

Examine why Travis started throwing an error for Flutter: ERR : Package flashcards_flutter requires Flutter SDK version ^0.1.2 but the current SDK is 0.2.1-pre.39.

Home page

Create main page with list of courses and tabs for filtering.

Design deppends on #28 and #29.

  • Web
    • Firebase
  • Mobile
    • Firebase
  • BLoC
    • Firebase

Explore Firebase

Explore Firebase options, try to compare with new Firestore.

  • explore Realtime Database
  • explore Cloud Firestore
  • determine what to use

Section page

Create section page with tabs which will switch between material and cards.

Design deppends on #28 and #29.

  • Web
  • Mobile
  • BLoC (?)

Generated documentation

vygenerovaná dokumentace ze zdrojových kódů (např. JavaDoc, Doxygen) - detailně musí být zdokumentovány všechny rozhraní (interfaces) a třídy a jejich metody podílející se na implementovaných případech užití

Explore authentication

Explore authentication using Google or Facebook, storing some credentials and how it works with Firebase/Firestore (#2). Both on web and mobile. In Dart, of course.

We will choose the Google login, but is it worth it to use FB too? Is it easy to set up etc.?

Is there any other popular login service?

  • Google web
  • Google mobile
  • FB web
  • FB mobile

Course page

Create course page with description and list of sections below.

Design deppends on #28 and #29.

  • Web
  • Mobile
  • BLoC (?)

Analytical domain model of classes

  • analytický (doménový) model tříd
  • diagram tříd - kardinality, názvy asociací (UML Structural-Class)
  • popisy jednotlivých entit a jejich atributů
  • stavový diagram pro vybrané entity (UML Behavioral-State Machine)

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.