Sharezone is a collaborative school organization app for iOS, Android, macOS and web.

Overview

Download Sharezone

Android iOS macOS Web
Get Sharezone on Google Play Get Sharezone for iOS Get Sharezone for macOS Open the Sharezone web app

Sharezone is a collaborative school organization app for iOS, Android, macOS and web.
With Sharezone pupils, teachers and even parents can organize homework, files, timetables, events, information sheets and more together.

Sharezone is currently only available in German.
We might expand to more languages and regions in the future 🌍 🚀

Join our Discord for active discussions, announcements, feedback and more!

Open-Source

We are currently in the process of open-sourcing this repository.
This means not everything is just quite perfect right now: For example we still need to migrate our old issues to GitHub, add documentation, add labels and more.
We track the outstanding work in this project.

This project is licensed under EUPL v1.2 or later.
For some files other licenses or terms (regarding e.g. copyright) might apply. This can be indicated, for example, by a notice included in the file itself or a README in a parent folder.
Guidelines for users and developers for the EUPL v1.2 can be found here.

Contribute

To contribute just open a PR and sign the Contributor License Agreement.
A bot will automatically ask you to accept the CLA when a PR is opened if you haven't already.

We have more instructions to help you get started in the CONTRIBUTING.md.

Follow us

Comments
  • Rework notification system

    Rework notification system

    Added PushNotificationActionHandler to parse and execute actions of a PushNotification by a user provided configuration.

    E.g.: If a Max added homework 'page 23 3b)' to 'math 8b' course notification comes in then this class will be invoked if the user taps on the notification. In this example invoking the PushNotificationActionHandler might result in opening the details page of the mentioned homework.

    PushNotificationActionHandler doesn't implement the exact actions and parsing logic itself but rather gives an instrumented, structured and opinionated way for a client of this class to provide their own parsing and handling of PushNotification via several ActionRegistration.

    A PushNotification needs to have an PushNotification.actionType (e.g. 'show-homework') which may have additional data PushNotification.actionData (e.g. {'id': 'homework-123').

    Example of a PushNotification:

    PushNotification({
     title: 'Max added a homework',
     body: '"S. 32 5b)" has been added to "Mathe 3a"',
     actionType: 'show-homework',
     actionData: {
      'id': 'homework-1243',
     }
    });
    

    With the PushNotification.actionType a user-provided ActionRegistration can be selected where ActionRegistration.registerForActionTypeStrings equals the PushNotification.actionType.

    Then selected ActionRegistration will then be used to parse an ActionRequest from the PushNotification (e.g. ShowHomework(id: 'homework-123')) via ActionRegistration.parseActionRequestFromNotification.

    The parsed ActionRequest will then be passed on ActionRegistration.executeActionRequest to execute the action of the parsed ActionRequest (e.g. open a page showing the homework with the id 'homework-123').

    Example of a ActionRegistration:

    final showHomeworkRegistration = ActionRegistration<ShowHomeworkRequest>(
      registerForActionTypeStrings: {'show-homework-with-id'},
      parseActionRequestFromNotification: (notification, instrumentation) =>
          ShowHomeworkRequest(HomeworkId(notification.actionData['id'])),
      executeActionRequest: (actionRequest) {
        _navigationService.pushWidget(
            HomeworkDetails.loadId('${actionRequest.homeworkId}'),
            name: HomeworkDetails.tag);
      },
    );
    

    To use it:

    Create a normal notification:

    image

    Add actionType and other data (will be in actionData) as attributes:

    image

    The action types and attributes on can use can be found under app/lib/notifications/action_requests.

    opened by Jonas-Sander 22
  • Use `Firebase Hosting Preview Channels` to deploy a web app for every pull request.

    Use `Firebase Hosting Preview Channels` to deploy a web app for every pull request.

    We are building for every PR a web preview, which will be deployed to Firebase Hosting. The link to the website will posted as comment (like: https://github.com/SharezoneApp/sharezone-app/pull/119#issuecomment-1030012299).

    The previews are helping reviewer and other users to quickly view the changes in a compiled version.

    A link to a preview expires after 30 days.


    Closes #8

    ci/cd 
    opened by nilsreichardt 15
  • Recreate Podfile to start fix macOS build.

    Recreate Podfile to start fix macOS build.

    Building macOS on main resulted in the following error

    [!] No podspec found for `path_provider` in `Flutter/ephemeral/.symlinks/plugins/path_provider/macos`
    

    This seems to come from an old macOS Podfile. When Flutter creates a new Podfile many lines of code are not existing that we had in the Podfile in main.

    With this PR I:

    • Created a new Podfile by deleting the old one and letting Flutter create a new version (by running flutter pub get).
    • Add the build time fix for Firestore.
    • Update Firestore dependency (old version threw an error when running pod install)

    With these fixes I can now build the macOS version again on my MacBook.

    opened by Jonas-Sander 15
  • Add Codemagic App Previews (Android & iOS) for Pull Requests

    Add Codemagic App Previews (Android & iOS) for Pull Requests

    Description

    We are already using the Deploy to Firebase action to deploy our web to a temporary url, when opening a new pull request.

    codemagic_app_preview does the same for iOS and Android. Just scan the QR with your phone, install the app and review the changes 👍

    Currently, I'm not able to build a iOS and macOS with one Codemagic workflow. Therefore, we are not building the macOS app at the moment. When I fixed this, I will make a new PR for adding support for macOS 👍

    Google Sign In & Dynamic Links are not working at the moment for the Android version, because the dev Firebase project does not contain the SHA1 & SHA256 values of the code signing key (see #289).

    ci/cd 
    opened by nilsreichardt 8
  • WIP: Add a build test for Android, iOS and macOS to our CI

    WIP: Add a build test for Android, iOS and macOS to our CI

    Description

    In the past, we had several times problems with building for specific platforms (see #161, #64). To prevent this on a PR level, we check for every pull request, if the build is still possible.

    ci/cd 
    opened by nilsreichardt 6
  • Use FVM

    Use FVM

    Description

    This PR introduces the use of FVM. FVM allows to us have a SOT of our Flutter version. Therefore, it's easier to keep the same Flutter version across different developers. Additionally, we can use in CI/CD the same Flutter version in every workflow.

    Additional setup

    The use of FVM require additionally setup steps for a new developer:

    # Install FVM
    dart pub global activate fvm
    
    # Install Flutter version
    fvm install
    

    How to change the Flutter version

    1. Change the version in .fvm/fvm_config.json
    2. Run fvm install

    Related Tickets

    Closes #144

    opened by nilsreichardt 5
  • First integration test: Sign in with email address and password

    First integration test: Sign in with email address and password

    Description

    This PR introduces the first integration test. It's a simple one: Sign in with the email address and the password. The main focus of the PR was to set up the integration and fix the errors. Therefore, we can add more integration tests in different PRs.

    Demo

    https://user-images.githubusercontent.com/24459435/167846068-8747bed6-f775-41f5-8703-c7e3a53a40ec.mov

    How to run the integration tests

    flutter test \
      integration_test \
      --flavor dev \
      --dart-define \
      USER_1_EMAIL="[email protected]" \
      --dart-define \
      USER_1_PASSWORD="YOUR_PASSWORD"
    

    Native setup for integration tests

    I skipped the steps for setting up the iOS and Android device tests, because I think we only need these setups when run our tests with Firebase Test Lab or similar services. Firebase Test Lab needs these steps to properly run the tests. But at the moment, we just run our integration tests with flutter test in emulators/simulators.

    Related Tickets

    Closes #180

    opened by nilsreichardt 4
  • Icons looking weird on alpha web app

    Icons looking weird on alpha web app

    Describe the bug

    The Material Icons are looking weird / wrong on alpha web app.

    Steps to Reproduce

    1. Go to https://alpha.web.sharezone.net
    2. Login
    3. Click trough app

    Current broken behavior

    image image image image

    Expected behavior

    See Android / iOS app (I'm now too lazy to make the screenshots in the android / ios app 😅)

    Screenshots, videos or logs

    See broken behavior

    Tested device

    • Device: MacBook Pro M1
    • Browser: Chrome 95.0.4638.69
    • OS: macOS 12.0.1
    • App version: 1.6.1 (Alpha Web-App)

    Additional context

    Possible solution

    bug 
    opened by nilsreichardt 4
  • Add automatically labels to pull requests based on the changed file paths

    Add automatically labels to pull requests based on the changed file paths

    Description

    Finding pull requests with GitHub can be hard. Especially when our app has a bug and we try to find the pull request which caused the bug, might it be helpful to labels, like platform: android when we know it something with the Android build or changes to our CI/CD with the label ci/cd.

    Therefore, I added the labeler Action to automatically add labels to our pull requests based on the changed file paths.

    ci/cd 
    opened by nilsreichardt 3
  • Add `coverage` folder to `.gitignore`

    Add `coverage` folder to `.gitignore`

    I just saw that we had a app/coverage folder. I think this was a mistake to commit this folder. So I added coverage/ to the top level .gitignore. Maybe Flutter also adds the coverage as default to the .gitignore file: https://github.com/flutter/flutter/issues/101349.

    opened by nilsreichardt 3
  • Replace `jitsi_meet` package with `jitsi_meet_wrapper` + increase iOS deployment target to 12.0

    Replace `jitsi_meet` package with `jitsi_meet_wrapper` + increase iOS deployment target to 12.0

    Description

    I'm sure that the jitsi_meet package is the reason why the iOS build is failing in #153. The problem is that the jitsi_meet package isn't maintained anymore. So it's difficult to find a fix so that #153 can be merged.

    There are also several issues that Android 12 is not supported anymore by the package (https://github.com/gunschu/jitsi_meet/issues/376, https://github.com/gunschu/jitsi_meet/issues/368, https://github.com/gunschu/jitsi_meet/issues/366).

    There is a folk of jitsi_meet called jitsi_meet_wrapper which has better code and is maintained. So I migrated to this package (thanks to @saibotma 💙).

    One big disadvantage: jitsi_meet_wrapper uses the current Jitsi iOS SDK which requires +12.0. This means we need to drop the support for iOS 11.0 (other option would be to remove the Jitsi Feature for all users) 😞

    Demo

    | iOS | Android | |-|-| | image | image |

    ToDo

    • [x] Run on Android emulator
    opened by nilsreichardt 3
  • Add licence header commands to Sharezone CLI.

    Add licence header commands to Sharezone CLI.

    Create sz cli commands that:

    • Check that all files have the correct licence headers
    • Add licence header to all files that do not yet have to correct header
    sharezone cli 
    opened by Jonas-Sander 1
  • Refactor holiday code into separate holidays package

    Refactor holiday code into separate holidays package

    Moved most of the holiday code to lib/holidays.
    I left holidays_bloc inside of the app code since it interacts with the UserGateway and is more specific to the dashboard page widget. I didn't change any logic.
    I ran the app manually on the mac to check if it still works.

    platform: macos testing dependencies 
    opened by Jonas-Sander 1
  • Add option to add homework as private by default

    Add option to add homework as private by default

    Description

    I'm creating a lot of homework for myself (not official homework, just small homework for myself, like to look up the word XZY) to a course. These homework should not be shared with course because they specific for me.

    Having an option in the settings to say that I'm adding homework by default as private, would be helpful. This option would count for every course (I think per course setting would way to overkill).

    feature: homework feature request 
    opened by nilsreichardt 0
  • A creator of a homework should have the option to make the homework private for a selection of group members.

    A creator of a homework should have the option to make the homework private for a selection of group members.

    Problem

    For some homework, you are working in groups (e.g. with 3 other students). Currently, it's not possible to create a homework just for these users. You can either add the homework for your own or for the whole course.

    Idea

    An option to make the homework private for a selection of users.

    Edge Cases

    When changing the course while adding a homework, we should reset the selection of users because there could be users that are not in the new selected course.

    feature: homework feature request 
    opened by nilsreichardt 0
Owner
Sharezone
Organize your school day ✌️
Sharezone
ProTasks, a collaborative task management app

ProTasks This is the public repository for ProTasks, a collaborative task management app that I created. You can get the app from here Highlighted Too

null 3 Jan 3, 2023
Front-end of multiplayer web3 games implemented with Flutter to run on all platforms (Web, Android, iOS, Linux, Window, macOS, TV-OS)

Front-end of multiplayer web3 games implemented with Flutter to run on all platforms (Web, Android, iOS, Linux, Window, macOS, TV-OS)

R-Team 5 Nov 15, 2022
Unofficial Bavatar dart app for android, iOS and macOS

Unofficial Bavatar dart app for android, iOS and macOS Generated by the Very Good CLI ?? Getting Started ?? This project contains 3 flavors: developme

Pishure 3 Jul 12, 2021
Music reader for online data (Google Drive implementation). Cross platform goal : iOS, Android, MacOS, Windows

omusic A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this i

JeanNicolasdeLamballerie 0 Nov 30, 2021
task management app by fullstack school

task_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

Affan Amir 1 Oct 16, 2021
This is a timetable app for a specific school in Germany.

HAG-Stundenplan-App English version Dies ist eine App für das HAG in Deutschland. Diese App existiert, da es für Minderjährige keinen anderen Weg gibt

null 4 Aug 25, 2022
This is our school project that written with Flutter.

fit_diet This is our school project that written with Flutter. Team: Burak Arslan (Scrum Master) Cem Gümüş (Bussiness Analyst) Rahim Gökçeli (Mobile D

null 8 Oct 31, 2022
Flutter Web application having splash screen and providing Web view Using web view packege.

Webview with Splash Screen in Flutter Flutter Web View With Splash Screen. Subscribe Our YouTube Channel. Visit Website Demo OutPut ?? Links Getting S

Habib ullah 1 Dec 7, 2021
A cross-platform (Android/Windows/macOS/Linux) USB plugin for Flutter

quick_usb A cross-platform (Android/Windows/macOS/Linux) USB plugin for Flutter Usage List devices List devices with additional description Get device

Woodemi Co., Ltd 39 Oct 1, 2022
Decentralized SkyDB-based alternative to Twitter, YouTube and Instagram with a native iOS, Android and web app.

SkyFeed SkyFeed is a decentralized SkyDB-based alternative to Twitter, YouTube and Instagram with a native Android, web and (soon) iOS app. Use You ne

null 88 Oct 28, 2022
📱 CyBear Jinni App is the app to control CyBear Jinni Hub 💡 remotely from your Android, IOS and Web Browser

CyBear Jinni App Welcome This repository is in charge of the CyBear Jinni App and is part of the CyBear Jinni Smart Home system. The CyBear Jinni App

CyBear Jinni 104 Dec 1, 2022
Learn to build apps that work on Android, iOS, Web, and Desktop

Cross-Platform Development with Flutter Course Learn to build apps that work on Android, iOS, Web, and Desktop Go To Course Flutter is Google’s UI too

Mohamed Ibrahim 11 Oct 24, 2022
Video player-2.2.10 - A Flutter plugin for iOS, Android and Web for playing back video on a Widget surface

Video Player plugin for Flutter A Flutter plugin for iOS, Android and Web for pl

null 2 Sep 29, 2022
Flutter application that implements socket.io in Node.js Works in - Android, iOS and Web

Quick Chat - Flutter Flutter application that implements socket.io in Node.js Works in - Android, iOS and Web This repo only contains Flutter (fronten

Aayush Nikkon Subedi 22 Dec 23, 2022
Task List application developed in Dart language with SDK Flutter for Android, iOS and Web

Task List application developed in Dart language with SDK (Software Development Kit) Flutter for Android, iOS and Web.

João Bruno 2 Jun 2, 2022
Hybrid App build on flutter SDK able to run on Android, IOS, web, desktop

Codeforces Visualizer APP Ready to use Flutter Application. Uses codeforces API. Useful for codeforces programmers. ScreenShots Single User Page Compa

vikas yadav 13 Dec 31, 2022
A Flutter 2D RPG Game Engine On Web & Android & IOS.

DevilF Engine A Flutter 2D RPG Game Engine On Web & Android & IOS. The Devilf Engine Is A Open Source 2D Game Engine. The Engine Is Development Using

zhaoqipeng 15 Oct 20, 2022
A flag Flutter package for Android / iOS / Web.

flag A flag Flutter package for Android / iOS / Web. Mobile Based by https://github.com/dnfield/flutter_svg , Web Based by Image.network Screenshot Sv

Luna Gao 60 Dec 8, 2022
A self-hosted controller for mobile and macOS built using the Flutter framework.

LunaSea LunaSea is a fully featured, open source self-hosted controller! Focused on giving you a seamless experience between all of your self-hosted m

Comet.Tools 844 Jan 2, 2023