GithubHelp home page GithubHelp logo

kolplattformen / skolplattformen Goto Github PK

View Code? Open in Web Editor NEW
792.0 24.0 175.0 83.11 MB

The source code to the civic tech project Öppna Skolplattformen.

Home Page: https://skolplattformen.org

License: Apache License 2.0

JavaScript 16.46% Starlark 0.07% Java 1.29% Ruby 0.09% Objective-C 0.56% CSS 0.11% TypeScript 81.24% Dockerfile 0.16%
school-education app react-native civic-tech

skolplattformen's Introduction

Give us a ⭐ if you appreciate what we do!

Öppna skolplattformen

License Patreon Vercel Translation status Build Status

We are parents who got fed up with Skolplattformen, the City of Stockholm's school administration platform. \ We reverse-engineered the platform's API to create a simpler, faster, more consistent, and secure experience for parents and guardians. If you're simply looking for information about the app, our website can be found at https://skolplattformen.org/.
Check out the changelog to see what new features are added, and a list of fixed bugs.

This main repository for the project contains the source code for both the app and its website.
The sources for each can be found under apps and libs. The respective README files there contain more detailed descriptions.

Contents

Architecture

The project consists of several apps and libraries inside a NX monorepo.

Apps

/apps/ contains the application projects. This is the main entry point for a runnable application.

skolplattformen

The central part of the project is the app itself. It is written in TypeScript using React Native and React Native Kitten.

Our main goal with the app is to make it as fast and easy to use as possible. \

We're starting small, with more features being added over time.

For more information, check out the source code.

website

The code for the website at https://skolplattformen.org/. It's built using Next.js.

For more information, check out the source code.

Libs

/libs/ contains the library projects. There are many different kinds of libraries, and each library defines its own external API so that boundaries between libraries remain clear.

api

The base for all api implementations

api-hjarntorget

The implementation for the school platform in Gothenburg called Hjärntorget.

api-vklass

The implementation for the school platform Vklass.

api-skolplattformen

By not having to worry about the complex nature of the official API, the app becomes light-weight.
It also makes it easier for others to develop their own applications for the Skolplattformen API.

Pro tip: If you don't want the API to make requests to the back-end, you can turn on fake mode to return static data instead.
Do so by logging in using 12121212121212 or 1212121212 as your personal identity number. Check out the documentation here.

curriculum

Translations of curriculum codes (sv: ämneskoder på schemat) to clear text descriptions

hooks

To make it easier to use the the api in the app, we also created a set of React hooks. Check out the documentation here.

Getting started with Development

To clone and build the project, you first need to install git, node and yarn.

Clone the repo with

$ git clone https://github.com/kolplattformen/skolplattformen.git

Install dependencies

cd skolplattformen && yarn

iOS

If you wanna run the iOS app, you need to setup a couple of things first, we have a guide that will assist you in getting started with the iOS app. A Mac is required to build projects with native code for iOS so we do not have support for Linux / Windows.

If you already setup everything, you just need to run the following command in the project root:

Start the iOS app

yarn run ios

Android

If you wanna run the Android app, you need to setup a couple of things first, we have created three different guides depending on your operating system.

If you already setup everything, you just need to run the following command in the project root:

yarn run android

Website

Documentation coming soon.

Tests

Run all tests

yarn run test

Run a specific test

yarn run test:api-skolplattformen

Contributions

We want this project to be a citizen movement. If you find something you think needs fixing, we encourage you to do so yourself, and test it out on your machine first.
Once done, create a pull request where you explain why we should incorporate your fix into the project.
If you're new to GitHub, there's a number of excellent guides available, such as this one on forking projects and making pull requests.

There are many ways to contribute to the project.
If you don't know how to program and want help, you can file an issue to let us know when something isn't working properly.
We're super duper happy for both issues and pull requests, and we try to answer all of them as soon as humanly possible.

Another way to contribute is by helping translate Öppna skolplattformen on Hosted Weblate into a new language, or to improve existing translations.

Working together leverages available skills and experience in improving the project, ultimately creating the best possible experience.

Money

Even if we definitely stand by our claim that libre software doesn't mean gratis, we have now offered it free of charge on both the Apple App Store and on Google Play. With this different model, you can extend your appreciation to all our contributors. Send some köttbullar for the kids through voluntary donations on https://patreon.com/oppnaskolplattformen ❤️.

Disclaimer

This initiative was started by frustrated parents without any affiliation with the City of Stockholm.
We just want to find and read newsletters with greater ease, and register sick-leave in a convenient manner.

If you're offended by this initiative, rest assured there is no reason to be — we come in peace.

Contributors

License

Öppna skolplattformen is copyright 2020–2024 Not Free Beer AB.

Licensed under the Apache License, Version 2.0 (the "License"); you may use Öppna skolplattformen in compliance with the License. A copy of the License is included with this repository.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

skolplattformen's People

Contributors

axdra avatar believer avatar bittin avatar comradekingu avatar dansarie avatar davidfant avatar dependabot[bot] avatar dnov-swe avatar eahlden avatar edenstrom avatar erikhellman avatar grishund avatar irony avatar jimjardland avatar johanobrink avatar kajetan-kazimierczak avatar laralem avatar leverpastej avatar nisseboman avatar palmn72 avatar peterk avatar ptz0n avatar rauljim avatar rotsee avatar semantic-release-bot avatar stoft avatar viktorlarsson avatar webberian avatar weblate avatar whyer 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  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  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  avatar

Watchers

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

skolplattformen's Issues

Gruppera betyg per termin

Kan ni också fixa så att betygen grupperas per termin och inte kommer huller om buller i tid så vore allt perfekt

Kan inte backa tillbaks till appen från webbvy

När jag klickar på en av länkarna i Aviseringar hamnar jag i en webbvy som visar rätt information.

Backa-knappen i Android fungerar dock inte alls här. Det går inte att backa tillbaka till appen och det går inte att backa inne i webbvyn efter att ha följt någon länk. Det finns en rad längst upp som visar domännamn på domänen jag anlände till från appen. Klickar jag mig vidare ut på internet ändras inte domännamnet trots att jag befinner mig på en annan domän.

Det finns även en svart, rund x-ikon till höger om domännamnet som ser ut som om den skulle stänga sidan, men inget händer när jag trycker på den.

Skärmdump från aviseringslänk hos testanvändaren 121212-1212.
Screenshot_20210213-150334

Lyckades "backa" tillbaka in i en appen genom att sätta appen i split screen som tar mig tillbaka till inloggningsvyn.

App-version 1.1.1
Google Pixel 2 XL, Android 11

Önskemål: Lägg till möjlighet att dölja bilder i nyhetsbrev

The newsletter functionality is already better than in the original version. But a lot of screen space is occupied with a picture with no relevant information. It would be great if it could be removed entirely or via a setting (I went through as many newsletters I could find and none of them contain meaningful information.). See examples below.

image
image

Expandera till VKlass

Systemet som Lidingös skolor använder är också väldigt utmanande, skulle gärna se att skolplattformen kunde vara ett alternativ för oss som är bundna till "Vklass".
Hoppas fler känner likadant =)

Alla ikoner leder till Nyheter

App-version: 1.1.1
Google Pixel 2 XL, Android 11.

  1. Starta appen
  2. Logga in med testanvändaren 121212-1212
  3. Tryck på ikonen längst till höger under det första barnet.

Förväntar mig att hamna i tabben Klassen.
Hamnar istället i tabben Nyheter.

Dina barn står bara och laddar...

Det kan vara så att mina barn inte ska synas i Skolplattformen, men upplevelsen är fortfarande att efter att jag loggat in med BankId så står vyn "Dina barn" och "Laddar..." och hjulet snurrar... Kommer inte vidare och får inget meddelande!

Hoppa automatiskt tillbaka till appen efter BankID-inlogg

Gissar att det har att göra med vad man använder för SDK eller så för BankID? Det är ju trevligt om man inte själv behöver hoppa tillbaka till appen efter inloggning (vilket jag nu behöver göra på min iPhone XS i alla fall).

app: Felvisning och omladdning

Every content hook exposes one method:

  • reload()

...and three properties:

  • data: The data returned from cache or API - gets rendered
  • status: The status of the api call, cal be pending | loading | loaded | error
  • error: Any error encountered in the api call

If an error occurs in the api call (including the parsing step), the hook will retry. This is done three times before giving up. While the retries happen, the error property gets set but status remains as loading.

The following functionality should be added:

  1. When we load data (ie. `state === 'loading'), this should be inicated. The indication should be subtle since data might already be displayed from cache.
  2. When an error occurs (ie. error !== undefined), this should be indicated. The indication should be subtle since we still haven't given up.
  3. When we reach a failed state (ie. `status === 'error'), this should be indicated more prominently.
  4. On pulling down the scroll area, the reload() method should be called.

bug: 🐛 Inloggad-sidan

  • Sidrubriken radbryter felaktigt...! - För rättvisans skull..., visas det en kvinnlig person på denna sida om det är en kvinna som loggat in..!? 🤔 Man kan ju utröna kön på den inloggade via personnumret..., så kanske göra en koll där å då visa ”rätt” kön på bilden..!? Hittar ingen knapp för att logga ut ur Appen..!? 😱

https://appstoreconnect.apple.com/apps/1543853468/testflight/screenshots/AFk_SbhAFe2-nqvWXdyQrcM?preReleaseVersionId=f3428a42-d1c6-477a-a22f-b10564953ffd&sort=-timestamp

Bara tre toppnyheter visas

På nyhetssidan visas bara de tre senaste nyheterna, och det finns inget sätt att visa resten. I den gamla appen finns en ”Visa alla” knapp som saknas i Öppna Skolplattformen.

Skärmbild från gamla appen:
EDECB0F1-7609-4610-A96B-2C020091AA75

bug: 🐛 Kontakt

  • Är telefonluren den tydligaste ikonen att symbolisera ”kontaktuppgifter” i allmänhet...!? Spontant kan man ju tro att det är för att ringa upp elev/v.h.!? - Provade att klicka på kontaktinformationen för några vårdnadshavare i listan, å trots att där verkade finnas både e-postadresser och SMS-nummer så genererades oadresserade mejl och SMS...!

https://appstoreconnect.apple.com/apps/1543853468/testflight/screenshots/AJc1j3RW4VH8AOSluk9NRzs?preReleaseVersionId=f3428a42-d1c6-477a-a22f-b10564953ffd&sort=-timestamp

app: Login screen

image
image

Headline is too long. Also: shouldn't it be "Öppna Skolplattformen"?
Open BankID-button has slipped back behind keyboard (iOS)

Lägg till kalenderhändelser i mobilens egna kalender

Feature request: Kunna antingen a) synka kalenderhändelser för samtliga barn direkt in i mobilens kalender (så att t.ex. APT, studiedagar automatiskt finns i egen kalender när de läggs in) eller b) kunna trycka på en kalenderhändelse för att lägga till den i mobilens egna kalender från listan.

Stöd för frånvarohantering

Feature request: möjliggör att rapportera dagsfrånvaro för barn direkt från appen (t.ex. från Dina barn-vyn)

Inloggningsförbättringar

Så här ser det ut när jag loggar in i appen på min första generationens iPhone SE:

bankid_skolplattformen

  1. Jag möts av en blaffa siffror och vet inte vad jag ska göra. Det känns inte ens som att jag är i en app eftersom klockan och symbolerna i skärmens överkant är borta. (Egentligen är de där fast i vitt mot vitt. Jag har lagt in en separat issue om detta: #103) Men okej, jag testar väl att fylla i mitt personnumer.
  2. När jag skrivit i sista siffran händer något bakom bilden. Jag funderar på hur jag ska kunna stänga ner blaffan (jag ser att det finns en issue inlagd om att den inte stängs: #78) och trycker till slut på bilden ovanför.
  3. Bilden är dock länkad till sidan "Dina barn". Varför är den det? Jag backar tillbaka.
  4. Nu ser det tydligare ut. Jag trycker på "Öppna BankID".
  5. Jag fyller i min BankID-kod.
  6. Jag trycker på "Identifiera".
  7. I det sista steget måste jag manuellt byta tillbaka till Skolplattformen-appen.

Egentligen borde man inte behöva fylla i personnumret alls, och även bli automatiskt tillbakaskickad till Skolplattformen-appen, som hos Kivra och de flesta banker:

bankid_kivra

  1. Jag trycker på "Logga in".
  2. Jag fyller i min BankID-kod.
  3. Jag trycker på "Identifiera".

Eventuellt skulle man kunna visa de fyra första sex siffrorna, som hos Klarna när man loggar in efter första gången, men det känns onödigt. Man ser i BankID-appen vem man försöker logga in som.

bankid_klarna_2

Så här ser det ut i Klarna-appen första gången man loggar in. Notera skärm 2 och 3 där man har möjlighet att spara personnumret (jag ser att det finns en annan issue inlagd om att spara personnummer: #82 – dock, personnummer är ju den ultimata personuppgiften och om sparandet av den på något sätt grumlar chanserna till att staden låter den här appen finnas kvar så tycker jag man klarar sig om bara inloggningsförfarandet blir lika smidigt som i skärm 2) och tydligt ser inloggningsknappen även när sifferblaffan täcker skärmen. Ligger dessa två steg hos BankID? I så fall kanske ni kan "låna" dessa steg relativt enkelt? Eller är det i så fall Stockholms stad som måste göra det?

bankid_klarna_1

Det vore trevligt också om BankID-loggan fanns på knappen. Då fattar hjärnan direkt vad som gäller. Hursomhelst säger mig symbolen med nio cirklar ingenting i detta fall.

Det är onödigt att inloggningsknappen är utgråad så länge personnumret inte är ifyllt. Ingen annan BankID-implementation som jag sett villkorar inloggningsknappen. Villkorsfunktioner och funktioner som "hjälper" användaren till rätt format ökar risken för buggar och krångel både för utvecklarna och användarna. Den uppfattas dessutom mycket lättare som en knapp när den är rosa.

bankid_skolplattformen_0

Till sist: Informationen om antalet siffror i personnummerfältet är för lång för att rymmas i fältet. Om användaren nu ska fylla i sitt personnummer och om appen då ska instruera användaren om antalet siffror så tycker jag att det är bättre att ge enbart ett alternativ, nämligen det enklaste, som är tio siffror, och att ge alternativet som ett exempel: "ÅÅMMDDXXXX". Om användaren då skriver in tolv siffror så kan systemet ignorera de två första, men om användaren skriver in tio siffror och systemet förväntar sig tolv så vet inte systemet vilka två siffror som ska läggas till eller var de ska läggas till.

Update readme with requirements for development environment

The readme is currently missing information on what is required to set up a development environment.

The following did not give a working development version:

npm install
npm run-script bootstrap

Tested using:
npm -v: 6.14.11
node -v: 14.15.5

Tested on a debian buster.

app: Summering av meddelanden på startsidan

When a user receives a notification - we want to make it as easy as possible to find the relevant notification. Either we show the unread notifications on the start page or keeping some form of red notification bubble on the child.

Slutet klippt på långa nyheter

App-version: 1.1.1
Google Pixel 2 XL, Android 11.

  1. Starta appen
  2. Logga in med testanvändaren 121212-1212
  3. Tryck på nyhetsikonen på första barnet
  4. Klicka på Nyheten med titeln Brandsläckare.
  5. Scrolla längst ned

Förväntar mig att kunna se sista meningen som säger: Vi rekommenderar att ni tvättar eller vädrar dessa.

Ser istället att raden är klippt efter ordet eller. Min gissning är att någon kod har mätt skärmens höjdstorlek men inte räknat med Androids navigeringsrad längst ner på skärmen.

Screenshot_20210213-154552

BankID-knapp döljs vid inloggning

När jag loggar in (på en iPhone 7) ligger siffermenyn kvar när jag har matat in mitt personnummer. Den döljer det mesta av den knapp som öppnar BankID-appen och det gör det lite bökigt och otydligt hur jag ska komma vidare.

IMG_2694

Otydligt menyalternativ för notifieringar

image

Jag skulle hellre se denna typ av symbol:

image

Och även gärna att det svengelska och långa ordet "notifieringar" byttes ut mot antingen "aviseringar" (som i Android) eller "notiser" (som i iOS).

Kom ihåg personnummer

Det skulle vara skönt att inte behöva skriva in sitt personnummer varje gång man öppnar appen. Kan man lagra det lokalt? Kanske en "Kom ihåg mig"-switch för säkerhets skull?

Annat barns nyheter

Jag har 2 ungar på samma förskola men i olika grupper. Får upp äldre ungens ”nyheter” även på yngsta trots att det ska vara olika. På Skolplattformen får jag upp rätt just idag men jag är ganska säker på att jag haft samma problem där.

bug: 🐛 News

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.