The source code to the civic tech project Öppna Skolplattformen.
Go to file
semantic-release-bot 15cdf0682b chore(release): 2.0.0 [skip ci]
# [2.0.0](https://github.com/kolplattformen/skolplattformen/compare/v1.48.0...v2.0.0) (2021-10-03)

### Bug Fixes

* 🐛 add 2 to xsrf header and use nav controller script again ([d1a4877](d1a4877ff4))
* 🐛 add missing headers for fetching children ([68c99cb](68c99cb1fb))
* 🐛 Add personal identity number to test user ([f977143](f97714346e))
* 🐛 added "Rast" to misc words in sv,en,pl translations ([#11](https://github.com/kolplattformen/skolplattformen/issues/11)) ([4da06bb](4da06bb16e))
* 🐛 Added build step ([#38](https://github.com/kolplattformen/skolplattformen/issues/38)) ([db0faf2](db0faf28bf))
* 🐛 Added isAuthenticated to test user ([#119](https://github.com/kolplattformen/skolplattformen/issues/119)) ([766f4ff](766f4fff52))
* 🐛 Added luxon to fix getSchedule ([#13](https://github.com/kolplattformen/skolplattformen/issues/13)) ([fe1729c](fe1729c872))
* 🐛 Added missing types ([3d59035](3d59035a20))
* 🐛 Adjusted cookie handling ([#79](https://github.com/kolplattformen/skolplattformen/issues/79)) ([16020a3](16020a3d3c))
* 🐛 Autopublish (I hope) ([#37](https://github.com/kolplattformen/skolplattformen/issues/37)) ([ed8f8a7](ed8f8a7f5c))
* 🐛 Build before publish ([e934950](e934950470))
* 🐛 Cache is no longer called in fake mode ([#3](https://github.com/kolplattformen/skolplattformen/issues/3)) ([f89f143](f89f1431df))
* 🐛 Changed build settings ([7a7c2a1](7a7c2a1734))
* 🐛 Cleanup on logout ([#6](https://github.com/kolplattformen/skolplattformen/issues/6)) ([644cbcd](644cbcd464))
* 🐛 Correct format of fakeData.js ([c2adf00](c2adf004d3))
* 🐛 Fake data included through ts ([663be5c](663be5cc35))
* 🐛 Fix för login block 24mars ([7667a5e](7667a5e25a))
* 🐛 fix latest security "fix" ([d795458](d7954587d5))
* 🐛 fix the previous fix with a fixed json ([eefd791](eefd79155b))
* 🐛 Fixa markdownkonvertering av hårresande html ([#120](https://github.com/kolplattformen/skolplattformen/issues/120)) ([4991f91](4991f910a3))
* 🐛 Fixar links med mellanslag ([#63](https://github.com/kolplattformen/skolplattformen/issues/63)) ([3edbf8c](3edbf8c2c6))
* 🐛 Fixar senaste blocken ([#81](https://github.com/kolplattformen/skolplattformen/issues/81)) ([1ccdc9f](1ccdc9f42e))
* 🐛 Fixed fake data for notifications ([#40](https://github.com/kolplattformen/skolplattformen/issues/40)) ([b8621b9](b8621b94f1))
* 🐛 Fixed parsing bug for classmates ([5f07259](5f07259ddc))
* 🐛 Fixes base64 iterations ([52d7341](52d7341e2b))
* 🐛 Fixes configuration fetch ([7bf8f1c](7bf8f1c2a8))
* 🐛 Fixes more sabotage from sthlm stad ([ab62ab6](ab62ab6d35))
* 🐛 Fixes schedule ([fb65a33](fb65a33d82))
* 🐛 Flytta mellanslag utanför taggarna ([#124](https://github.com/kolplattformen/skolplattformen/issues/124)) ([79e2a75](79e2a7577b))
* 🐛 Förbättrad parsning av nyhetsbrev ([#125](https://github.com/kolplattformen/skolplattformen/issues/125)) ([82fa2dc](82fa2dcc84))
* 🐛 Force release ([#115](https://github.com/kolplattformen/skolplattformen/issues/115)) ([5c170dc](5c170dc070))
* 🐛 Get all notifications. Add modified date to notifications ([#150](https://github.com/kolplattformen/skolplattformen/issues/150)) ([4a0841a](4a0841a704))
* 🐛 hämta API key från server ([9bde441](9bde441907))
* 🐛 implemented XSRF token support ([1ecfdaf](1ecfdafede))
* 🐛 Moved topologykey to config, also added getHeader() ([2823547](2823547804))
* 🐛 News item details now gets parsed ([#55](https://github.com/kolplattformen/skolplattformen/issues/55)) ([50ce985](50ce985edc))
* 🐛 Ny version av curriculum ([#148](https://github.com/kolplattformen/skolplattformen/issues/148)) ([e54ed25](e54ed25d9f))
* 🐛 Parse old aspnet dates instead of unreliable format strings ([#108](https://github.com/kolplattformen/skolplattformen/issues/108)) ([3c33c75](3c33c75956)), closes [#105](https://github.com/kolplattformen/skolplattformen/issues/105)
* 🐛 Parsning ([83ec383](83ec3833c3))
* 🐛 read xsrf token from script for createItem call ([1deb424](1deb42430c))
* 🐛 Reload anropar bara apiet om den inte redan laddar ([#9](https://github.com/kolplattformen/skolplattformen/issues/9)) ([c329283](c32928369b))
* 🐛 reload inaktivt i fejk ([#10](https://github.com/kolplattformen/skolplattformen/issues/10)) ([9fa63e8](9fa63e84fe))
* 🐛 Removed dynamic require ([#8](https://github.com/kolplattformen/skolplattformen/issues/8)) ([a3421b8](a3421b8772))
* 🐛 Removed superfluous property in en.json ([#5](https://github.com/kolplattformen/skolplattformen/issues/5)) ([b6137ab](b6137abb05))
* 🐛 rensa upp getChildren anropet och ny release ([2336861](2336861a71))
* 🐛 Repaired login ([#11](https://github.com/kolplattformen/skolplattformen/issues/11)) ([83a4737](83a4737594))
* 🐛 Replaced named capture group for compatibility reasons ([#112](https://github.com/kolplattformen/skolplattformen/issues/112)) ([66b23fa](66b23faf43))
* 🐛 Replaces non breaking space with simple space ([#57](https://github.com/kolplattformen/skolplattformen/issues/57)) ([58d5676](58d56764d3))
* 🐛 Return a empty array if backend returns a specific error ([1e944ad](1e944adf24))
* 🐛 semikolonviolation! ([46c6260](46c62601a2))
* 🐛 Silly stockholm stad protection ([cd19abd](cd19abdd0f))
* 🐛 Tog bort radbrytning i bold ([#66](https://github.com/kolplattformen/skolplattformen/issues/66)) ([ca0117c](ca0117ce64))
* 🐛 Trims tag content to fix some markdown issues ([#56](https://github.com/kolplattformen/skolplattformen/issues/56)) ([f9dc391](f9dc39128e))
* 🐛 URLSearchParams compatible with both node and RN ([#111](https://github.com/kolplattformen/skolplattformen/issues/111)) ([fd919a0](fd919a0b5e))
* 🐛 use childcontroller script for XSRF header to CreateItem ([2796875](2796875fe2))
* 🐛 Working notification url:s ([#41](https://github.com/kolplattformen/skolplattformen/issues/41)) ([3a808f9](3a808f9ccd))
* add date handler ([a3e0eba](a3e0eba706))
* correct fake data dates ([d88bfcf](d88bfcf564))
* handle iso date strings ([ca0a3e4](ca0a3e49ac))
* handle long dates with time ([3ba96fe](3ba96feec9))
* handle missing spaces in intro after certain characters ([#99](https://github.com/kolplattformen/skolplattformen/issues/99)) ([2926de3](2926de31fe))
* links ([#64](https://github.com/kolplattformen/skolplattformen/issues/64)) ([905b893](905b893ca7))
* parse calendar dates as utc before iso ([#100](https://github.com/kolplattformen/skolplattformen/issues/100)) ([73f6d8b](73f6d8ba72))
* parse intro without positive lookbehind regex ([#102](https://github.com/kolplattformen/skolplattformen/issues/102)) ([f8b3df2](f8b3df2936))
* Translations update from Weblate ([#16](https://github.com/kolplattformen/skolplattformen/issues/16)) ([94a3883](94a38833c1))
* use date constructor instead of luxon ([74ea878](74ea878073))
* use parseDate for all date handling ([6cd92ac](6cd92acbe3))

### Features

* 🎸 Added .author and .imageAltText on NewsItem ([#42](https://github.com/kolplattformen/skolplattformen/issues/42)) ([6e84a63](6e84a6391a))
* 🎸 Added getter for logged in personal number ([#39](https://github.com/kolplattformen/skolplattformen/issues/39)) ([a860d12](a860d1208c))
* 🎸 Added language support ([#121](https://github.com/kolplattformen/skolplattformen/issues/121)) ([9dcdf78](9dcdf78515))
* 🎸 Alla nyhetsbrev ([#67](https://github.com/kolplattformen/skolplattformen/issues/67)) ([f3f658f](f3f658fdd3))
* 🎸 API call retries and support for error reporting ([#5](https://github.com/kolplattformen/skolplattformen/issues/5)) ([9ed5df2](9ed5df2e45))
* 🎸 Build, tag and release ([b71adc5](b71adc57fb))
* 🎸 cache busting ([5ce4ddd](5ce4ddd9d0))
* 🎸 Cache prefixas med personnummer ([#8](https://github.com/kolplattformen/skolplattformen/issues/8)) ([fc146ea](fc146ea7fc))
* 🎸 Classmates ([#14](https://github.com/kolplattformen/skolplattformen/issues/14)) ([a6ce6ea](a6ce6ea9f6)), closes [#7](https://github.com/kolplattformen/skolplattformen/issues/7)
* 🎸 Code cleanup, refactoring, linting and tests ([d0a0314](d0a0314ae6))
* 🎸 Curriculum as peer dependency ([#122](https://github.com/kolplattformen/skolplattformen/issues/122)) ([e24a9b3](e24a9b3c5e))
* 🎸 Exporting all types in index ([#45](https://github.com/kolplattformen/skolplattformen/issues/45)) ([8351ef2](8351ef275f))
* 🎸 Exporting LoginStatusChecker interface ([#46](https://github.com/kolplattformen/skolplattformen/issues/46)) ([20e18e5](20e18e5e23))
* 🎸 Fake mode for 121212121212, 201212121212 and 1212121212 ([#35](https://github.com/kolplattformen/skolplattformen/issues/35)) ([8d264b9](8d264b9787))
* 🎸 Fakedata laggar 0.2-1 sekund ([#68](https://github.com/kolplattformen/skolplattformen/issues/68)) ([018d600](018d60099d))
* 🎸 Fallback language ([#7](https://github.com/kolplattformen/skolplattformen/issues/7)) ([e944468](e944468734))
* 🎸 First implementation ([e5438b0](e5438b0f26))
* 🎸 First release ([d37f3db](d37f3db3e8))
* 🎸 Forcing release ([d4151fa](d4151fa26f))
* 🎸 getSessionCookie and removed News object ([#24](https://github.com/kolplattformen/skolplattformen/issues/24)) ([91ba683](91ba6833b4)), closes [#22](https://github.com/kolplattformen/skolplattformen/issues/22) [#23](https://github.com/kolplattformen/skolplattformen/issues/23)
* 🎸 getUser ([#19](https://github.com/kolplattformen/skolplattformen/issues/19)) ([39b62b7](39b62b7b37)), closes [#9](https://github.com/kolplattformen/skolplattformen/issues/9)
* 🎸 Hämta lektionsschema ([#110](https://github.com/kolplattformen/skolplattformen/issues/110)) ([c288449](c2884497bf))
* 🎸 Image ([#21](https://github.com/kolplattformen/skolplattformen/issues/21)) ([2ad7523](2ad7523a1d)), closes [#10](https://github.com/kolplattformen/skolplattformen/issues/10)
* 🎸 It now handles comments ([065e0e9](065e0e9682))
* 🎸 Loads schedule ([#16](https://github.com/kolplattformen/skolplattformen/issues/16)) ([53d42de](53d42de62c)), closes [#13](https://github.com/kolplattformen/skolplattformen/issues/13) [#8](https://github.com/kolplattformen/skolplattformen/issues/8)
* 🎸 Made User properties optional for hook convenience ([#31](https://github.com/kolplattformen/skolplattformen/issues/31)) ([0e0e996](0e0e996589))
* 🎸 Misc codes (Lunch, Prandium, MTID) ([59e350b](59e350b6ab))
* 🎸 Multilang support for useTimetable ([#14](https://github.com/kolplattformen/skolplattformen/issues/14)) ([be6c9d1](be6c9d1302))
* 🎸 Names from curriculum ([#116](https://github.com/kolplattformen/skolplattformen/issues/116)) ([504503f](504503f7a0))
* 🎸 New properties on NewsItem and updated fake data ([#44](https://github.com/kolplattformen/skolplattformen/issues/44)) ([dea899b](dea899bd17))
* 🎸 News are sorted, desc, by modified date ([#147](https://github.com/kolplattformen/skolplattformen/issues/147)) ([a4b7b7f](a4b7b7f6a9))
* 🎸 News images that do not require login ([#43](https://github.com/kolplattformen/skolplattformen/issues/43)) ([5daf186](5daf186d5c))
* 🎸 Notifications ([#20](https://github.com/kolplattformen/skolplattformen/issues/20)) ([348e437](348e43778d)), closes [#11](https://github.com/kolplattformen/skolplattformen/issues/11)
* 🎸 Notifications sorted by modified, then created date ([#151](https://github.com/kolplattformen/skolplattformen/issues/151)) ([91f63e8](91f63e8d2a))
* 🎸 Polish ([#9](https://github.com/kolplattformen/skolplattformen/issues/9)) ([18c8126](18c81264a0))
* 🎸 Possibly first working version ([0e4acba](0e4acba776))
* 🎸 Remove all obsolete login obstacles ([#146](https://github.com/kolplattformen/skolplattformen/issues/146)) ([befb073](befb073a32))
* 🎸 Remove required personal number in route ([#118](https://github.com/kolplattformen/skolplattformen/issues/118)) ([c3b4b15](c3b4b153c3))
* 🎸 Removed getImage() and added .fullImageUrl to NewsItem ([#33](https://github.com/kolplattformen/skolplattformen/issues/33)) ([5c3929d](5c3929d9d1))
* 🎸 Replaced Moment with Luxon ([#30](https://github.com/kolplattformen/skolplattformen/issues/30)) ([e41f0bf](e41f0bf435))
* 🎸 Släpp sargen - nu kör vi ([#60](https://github.com/kolplattformen/skolplattformen/issues/60)) ([c5e9992](c5e9992f9a))
* 🎸 Switched to Markdown Extra converter ([#58](https://github.com/kolplattformen/skolplattformen/issues/58)) ([3b7b067](3b7b0677a4))
* 🎸 Timetables ([#12](https://github.com/kolplattformen/skolplattformen/issues/12)) ([2ae212d](2ae212d46a))
* 🎸 Updated curriculum and fake data with new codes ([#117](https://github.com/kolplattformen/skolplattformen/issues/117)) ([0a02ffa](0a02ffa04d))
* 🎸 useNewsDetails(child, news) ([5d4f751](5d4f7515cd))
* add newsItemDetails ([1826b80](1826b80d4b))
* call newsItemDetails to get details for a news item. Resolves [#28](https://github.com/kolplattformen/skolplattformen/issues/28) ([5dcc42e](5dcc42eeac))
* Improve menu ([#109](https://github.com/kolplattformen/skolplattformen/issues/109)) ([9c4fcb2](9c4fcb2d25))
* Ombyggd parsning av nyhetsbrev ([#65](https://github.com/kolplattformen/skolplattformen/issues/65)) ([a5dfb70](a5dfb704f4))
* update typings for ScheduleItem ([9c87535](9c87535c5b))

* Rebuilt session handling and login (#78) ([c62dab9](c62dab9e2e)), closes [#78](https://github.com/kolplattformen/skolplattformen/issues/78)

### BREAKING CHANGES

* 🧨 useTimetable now requires lang
* 🧨 getTimetable requires language
* 🧨 Child -> EtjanstChild

* feat: 🎸 Test data for skola24Children and timetable

* docs: ✏️ Updated instructions

Co-authored-by: Johan Öbrink <johan.obrink@gmail.com>
* This updates the `startDate` and `endDate` to be
potentially `undefined`
* 🧨 Major update of peer dependency embedded-api
* 🧨 Cookie and Session handling reworked
* 🧨 Nä... egentligen inte
* 🧨 api no longer exposes getImage()
* 🧨 Change to types (moment -> strings) and api.getSchedule (moment ->
luxon.DateTime)
* 🧨 Call signature of getNews changed
2021-10-03 12:13:50 +02:00
.github chore(actions): remove yarn audit 2021-08-16 19:42:24 +02:00
k8s prepare for new domain skolplattformen.org 2020-12-14 18:21:43 +01:00
libs Merge remote-tracking branch 'curriculum-repo/main' into feature/monorepo 2021-10-03 11:52:57 +02:00
packages Merge pull request #489 from kolplattformen/feat/upgrade-packages-to-remove-warnings 2021-10-01 13:06:26 +02:00
.gitignore fix: 🐛 Välja språk på Android var trasigt (#467) 2021-09-15 23:48:19 +02:00
.nvmrc chore: update root dependencies (#274) 2021-04-15 17:06:03 +02:00
.releaserc chore: automatiskt changelog via semantic-release (#170) 2021-02-21 15:51:04 +01:00
CHANGELOG.md chore(release): 2.0.0 [skip ci] 2021-10-03 12:13:50 +02:00
LICENSE Bump build and renamed HB to AB 2021-09-12 19:28:40 +02:00
README.md Update README.md 2021-09-23 11:11:09 +02:00
bitrise.yml Bitrise 2021-04-26 10:56:07 +02:00
lerna.json fix: 🐛 Removed lerna workspaces 2021-02-08 19:26:22 +01:00
package.json chore(release): 2.0.0 [skip ci] 2021-10-03 12:13:50 +02:00
skaffold.yaml prepare for new domain skolplattformen.org 2020-12-14 18:21:43 +01:00
yarn.lock chore: 🤖 pod install 2021-09-17 10:18:33 +02:00

README.md

Give us a if you appreciate what we do!

Öppna skolplattformen

License Patreon Vercel Translation status 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 packages/app and packages/site.
The respective README files there contain more detailed descriptions.

Contents

Architecture

The project consists of two main parts: the app and the embedded API.

App

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.

Embedded API

We decided to encapsulate our API implementation into a separate npm package.
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.

The embedded API has its own project page at https://github.com/kolplattformen/embedded-api.
To make it easier to use the embedded API in the app, we also created a set of React hooks, available at https://github.com/kolplattformen/api-hooks.

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.

Development

To clone and build the project, you first need to install the required dependencies:

$ sudo apt install git npm
$ npx lerna bootstrap

Clone the repo with

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

The README files for the app and website contain further instructions.

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 20202021 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.