Deti.dk · Copenhagen

The portal of the Russian Sunday school

A public website in three languages and a members' area for families and teachers — one system where the whole school lives: from a parent's first enquiry to the register, the timetable and the invoices.

  • 0website languages — RU · DA · EN
  • 0roles in the members' area
  • 3–18years — the children's ages
Download PDFThe same page as a single file — for printing, and for anyone who would rather be sent a document.See the members' area in a minute →

What the Deti.dk portal is

Overview

The portal is not a website plus «some administration program» on the side. It is one system with two faces: outwards it tells people about the school and takes enquiries, inwards it runs families, lessons, the register and the money. Both halves share the same data, so an enquiry from the website becomes a pupil without turning into an email, a spreadsheet and a sticky note on the way.

🌍 The public website

  • Russian, Danish and English — switched with one button
  • Programmes by age, timetable, team, prices, reviews, gallery
  • A quiz: «which class suits my child?»
  • Sign-up for a trial lesson and for events
  • Personal pages for teachers and pages for courses — worth sharing on social media

🔑 The members' area

  • Five roles: guest, parent, teacher, administrator, director
  • Each role sees its own set of sections — and nothing beyond it
  • Children, timetable, register, materials, invoices, events
  • Messages, calendar, a community of the school's families
  • The public website is edited from the inside — no developer needed

A family's path — from the first click to the full members' area

  1. 1EnquiryThe parent signs up on the website — the form works even without JavaScript
  2. 2Trial lessonThe school books a free lesson, and the reply arrives in the parent's own language
  3. 3EnrolmentA group is chosen, the child's profile is created and the first invoice follows the tariff
  4. 4Members' areaThe family gets full access: lessons, register, materials, payments
One thing worth saying separately. The website's content — texts, timetable, teacher cards, FAQ, reviews, gallery — lives in the database, not in the code. The school edits it from the members' area, and the change appears on the site immediately, with no developer and no «rolling out a new version».

The public website

deti.dk · RU / DA / EN

One long page a parent walks down from top to bottom and signs up at the end. Plus separate pages: teachers, courses, privacy, terms of sale.

Getting acquainted

  • The opening screen and «why us»
  • Choosing by the child's age
  • Mini-kindergarten, ages 3–5
  • What we teach · Russian, literature, speech therapy

Evidence

  • The Sunday timetable
  • The team — a card per teacher
  • Gallery
  • Parents' reviews

Decision

  • A quiz for choosing a class
  • Prices — openly, in a table
  • Frequently asked questions
  • Sign-up and contacts

What has been done here more carefully than usual

🌐 Three languages properly

Not «a switch that translates half the labels». Each language has its own address — /ru, /da, /en — and the site works out a new visitor's language from their browser settings. The reply to an enquiry arrives in the language it was sent in.

📝 A form that does not let you down

Signing up for a trial lesson and for events works without JavaScript: on an old phone, in data-saving mode, with scripts blocked. An enquiry is never lost — it is the school's only entrance.

🔎 Legible to search engines and AI

Structured organisation markup, a sitemap and correct robots — both search engines and today's AI assistants understand the school correctly, and parents increasingly ask them «where can my child go in Copenhagen?»

👩‍🏫 Pages for teachers and courses

Every teacher has their own page with a biography and their courses; every course has its own. These are separate addresses with a proper social-media preview: the link can go straight into a parents' chat.

The school runs the website, not a developer

The «Website» section of the members' area is an editor for all public content: texts in three languages, timetable, holidays, team cards, gallery, reviews, FAQ, the «why us» and «what we teach» blocks, age cards and course cards. An administrator or the director makes a change — and the site shows it at once.

The members' area: five roles

Who sees what

There is one members' area, but everyone enters their own version of it. Sections a role does not have are not merely hidden from the menu — they are closed to a direct link as well.

SectionGuestParentTeacherAdminDirector
Children and pupil page
Lessons and timetable — Sundays, sign-up, the grid
The family's account — balance and charges
Messages and chats
School — events, calendar, community
Sunday — the day's lessons and the register
My subjects — groups, proposals, courses
My hours by the bell grid
Children and families — all children, by group, pipeline, after the trial
Inbox — requests, absences and cover, candidates, reviews
Money — family balances, charges, transfers
Website — texts and events
Team — staff, roles, invitations
Settings and consents

The director can look at the members' area «through the eyes» of any role and enter the area of a particular person — a teacher, an administrator, a family. It is a separate mode: it changes the set of sections, but grants no extra rights, saves nothing in someone else's name, never opens someone else's correspondence, and writes every entry into the log by name.

Parent and guest

The largest group

A parent's area answers the four questions they actually log in for: how the lesson went for my child, what happens next, what I owe, and how to reach the school.

👧 Children

The home page of the area. A card for each child: teachers' notes, attendance over recent weeks, photos, the «safety» block (allergies, emergency contact, who collects them) and classmates, with the option to write to their parents.

🗓 Lessons

Two tabs. Our Sundays — the children's coming lessons: cancellations are struck through, covered lessons carry the name of the stand-in; from here you can also «report an absence», so the teacher knows in advance. Sign up — the group catalogue and the courses.

📚 Materials and games

No section of their own — they live on the child's card. Lesson topics and teachers' files only from the groups the child attends, and the door to the game portal.

🎓 Sign up: groups and courses

Two different lists on one tab. Groups — a catalogue: teacher, free places, price per lesson; you can ask a question, enrol your child, or join the waiting list. A course is neither a club nor a subscription: each course has its own price for the whole course, its own start and its own end, and sign-up opens in advance, the way it does for an event. Courses live in a calendar of their own for the year, not in the Sunday timetable.

💳 Account

The family's balance, not invoices a month ahead: the money sits on the account and is charged for the lessons attended, by the mark in the register. Top-ups, the history of charges, bank details for a transfer, and the status «awaiting confirmation» until an administrator has seen the transfer; when the money is running out, the school warns in advance.

🎈 School

Events with sign-up, the school's and the family's calendar — lessons, holidays, events, birthdays — and the community: classmates' families, the teachers, group chats.

Guest — a parent who is still looking around

A guest area is created as soon as the enquiry arrives from the website. It shows where the family stands on the way into the school: enquiry → trial lesson → enrolment → full area. It also holds the time of the trial lesson, the chat with the school and the game portal for the child. After enrolment the guest area becomes the full one: with the child, the group and the family's account.

The game portal

Learning games with words in three languages, stars for what has been completed, and read-aloud. They are open to guests too — a child can start playing the same day the parent signed up. Teachers extend the word sets, and the school sees an engagement report by age and skill.

Teacher, administrator, director

The school's workplaces

📖 Teacher

  • Sunday — the register of the chosen day: attendance in one tap, saved automatically; the arrows ‹ › open any Sunday
  • Badges right in the list: allergy, «no photos», birthday
  • A note about a child — visible to the parent at once, with a notification
  • Lesson materials — the topic and files go to every parent in the group
  • My subjects — own groups and courses: the teacher proposes, the administration approves; until it is approved, neither the group nor the course exists
  • A preferred time — the teacher asks for a slot in the timetable, the administrator moves the block and assigns a room; the confirmed lesson lands in the draft and does not skip publication
  • Four weeks ahead with cover and «can't make it», hours by the bell grid, chats

🗂 Administrator

  • Sunday — the day's lessons one by one: who is marked, trials, lessons without a teacher, families whose money is running out; any teacher's register opens from here
  • Children and families: every child in the school, people by group, the pipeline — enquiry → trial → enrolled → active, an archive with the reason for a decline — and who stays after the trial; enrolment in one action: the group, the child's profile, the family's account
  • Inbox — everything awaiting a decision, in one list: requests from families and teachers, absences and cover (a teacher's request → a stand-in → notifications across every timetable), candidates for the team, reviews and complaints
  • Timetable: the Sunday grid, adults and hours, courses, holidays; groups, places, waiting list, cancellations and reinstatements
  • Money: family balances, charges by attendance, confirmation of transfers, top-up invoices
  • Website: texts and subject pages, events and mailings

🦉 Director · Sunday

The director's home page is the same as the administrator's: the day's lessons, who is marked, trials, families whose money is running out. There is no separate dashboard.

Team

Staff and roles: invitations by email, role changes, blocking, handing a group to another teacher, the school's exports, an action log.

Candidates for the team

Enquiries from people who want to teach: the administrator sees them in the «Inbox» and follows up, the director hires.

Two rules the timetable rests on

A draft, not chaos

Timetable edits accumulate in a draft and disturb neither parents nor the website. A person publishes them in one action — and only then do the letters go out, and they go out to the right people: only to families whose children's lessons actually changed.

A cancellation and a day off are different things

A cancellation means «the lesson will not happen and is not charged». A teacher's day off means «a stand-in is needed». A clash on a teacher or a room is a warning a person confirms; a clash on a group is a refusal nobody can push through.

Money — transparent and by the rules

Prices are published on the site

The price is counted per lesson, not «per month in general». That is why the bill is larger in a month with five Sundays, and holidays reduce it by themselves — with no manual recalculation and no arguments.

amount = price per lesson × lessons per week × teaching Sundays in the period

School, ages 6–18 — price per lesson in a group of up to 10 children

Lessons per weekMonthly6 monthsYear
One90 kr80 kr80 kr
Two or more80 kr75 kr75 kr

Mini-kindergarten 3–5

250 kr per Sunday per child: 1000 kr in a month with four Sundays, 1250 kr in a month with five; during the holidays there is no mini-kindergarten, and those Sundays do not count. Groups of up to 20 children. There is no discount for a longer period here.

A second child

−10% of the resulting amount. Seniority is decided by date of birth.

Annual fee

250 kr per child once per school year, as a separate line. Paid in full whenever the child joins. The sibling discount does not apply to it.

One-to-one lessons

Speech therapist and special needs educator — from 450 kr per hour or a three-month course for 4999 kr; booking via the administrator. Other one-to-one lessons: the teacher agrees the price and the length with the family personally.

How invoices are issued

The machine calculates, a person issues

On the 20th the system prepares a draft of next month's invoices and calls the administrator: «please check». Nothing goes out to parents on its own. The person confirms exactly what they saw on the screen: if the recalculation gives a different amount at the moment of the click, the confirmation is refused.

The invoice is edited before it is sent

The confirmation screen is not a list of amounts but an editor: the administrator opens the invoice, changes the price, adds and removes lines, and only then sends it to the family. Before it is sent, the invoice does not exist — the parent does not see it because there is no data yet, not because a filter is hiding it.

An issued invoice is not rewritten

Once sent, the amount is never changed retroactively — a correction goes forward as a separate line. Someone else's transfer does not close someone else's invoice, partial payment is accepted, and a child can be left out of invoicing only with a reason, which goes into the log.

The due date is the same for everyone — the 1st. Payment goes through MobilePay right in the cabinet: the money lands on the family account straight after payment and the school does not have to look for it on a statement. If MobilePay is not available there is a bank transfer; it must carry a reference — what it is for and the child's first and last name — and an administrator confirms the arrival from the statement. A course is counted separately from the Sunday lessons: the teacher sets the price for the whole course, and the course has its own start and its own end. The sibling discount does not apply to courses; if a child leaves or does not turn up, the school keeps the payment; if the school or the teacher cancels the course, all the money comes back, with no counting of how much of it had been taught.

Privacy and security

Children's data lives here
The guiding principle: by default, more is closed than open. Privacy cannot be given back after a leak, but you can always open yourself up at the press of a button. So every default in the system is chosen in favour of the closed option rather than the convenient one.

🧒 A child has no account

And never will. A child is a record the parent creates and the school confirms. Children do not message each other, have no profiles and do not «befriend» anyone inside the system. That is precisely what keeps the portal from becoming a social network with minors on it.

👁 Adults decide who can see them

Three levels: only families you overlap with (the default), the whole members' area, or staff only. «Overlapping» means a shared group for the children or a shared event both families are attending. Phone and email are hidden by default; the administration always sees them.

✅ Consents — separate and revocable

Consent to a pupil page and consent to photographs are two different things, withdrawn separately, at any moment, from the settings. A child's birthday appears in the shared calendar only if the parent has agreed.

🔒 What is never shown

Allergies, the emergency contact and who collects the child are visible to nobody at any level of openness. They live only in the register of the teachers of the group the child attends.

The technical side

🌍 Everything in Europe

The application in Stockholm, the database in Ireland. Children's data does not leave the EU.

🛡 Row-level security

Enabled in the database on every table without exception: even a mistake in the code will not hand over someone else's row.

🚪 Access revoked instantly

Closing a session takes effect immediately — including for tabs already open and for background actions.

The community — how it is kept safe

A parent writes a review from the members' area and can follow what happens to it; the administration approves or declines it; an approved review appears on the website. A report about a message or a person joins the administration's queue, is closed with a decision and written to the log — and the person who reported it learns nothing new about the person they reported. Blocking is personal and mutual: the blocked person disappears from the feed, the conversations and the directory for both sides. A teacher cannot be blocked. Before their first message in the school-wide chat, everyone sees a reminder that the chat is read by all.

Reliability and how it is built

What holds it up

A school portal is not a shop window it would not hurt to lose. It holds the register, the invoices and children's data. So a separate part of the work went not into features, but into making the system able to report on itself and to survive unpleasant surprises.

📬 A daily health email

Every morning the school's shared mailbox receives a letter about how the system is doing — including when everything is fine. The rule is simple: silence means a fault, not wellbeing. No letter two mornings in a row is a reason to look into it.

💾 An encrypted backup every night

The database is copied every night, the copies are encrypted and kept in two places. Restoring from a backup is not merely «provided for» but rehearsed on a real copy — and repeated from a written procedure.

🧪 Automated checks

158 sets of checks: privacy, money, timetable, the site's languages, access by role. Each set is written by the rule «a check that cannot turn red is not a check»: once written, the code is broken on purpose to make sure the check caught it.

🔐 Safety catches on live data

Any utility script capable of changing live data simply refuses to run without explicit permission. This is protection not against ill will, but against ordinary tiredness at the end of the day.

What it is built on

ApplicationNext.js 14 and React — one modern codebase for both the website and the members' area, fast on a phone
DatabasePostgreSQL (Supabase), row-level security, EU region
HostingVercel, Stockholm region; the deti.dk domain
EmailThe school's own domain with SPF, DKIM and DMARC configured — the school's letters do not land in spam
LanguagesRussian, Danish, English — both content and interface

Updates deserve a separate word: the website and the members' area are one and the same application, so the school never has to «update a program», wait for a maintenance window or migrate data. A new capability appears for everyone at once, and the data stays in the same database throughout.

In short

Summary

For the parent

  • A clear website in your own language and a sign-up with two fields
  • An area showing lessons, the teacher's notes and attendance
  • Every invoice in one place, without reminders in messaging apps
  • A direct line to the teacher and to the school's other families
  • Full control over what others can see about the family

For the school

  • Not a single enquiry lost — they all sit in one pipeline
  • Register, timetable and cover in one workplace
  • Invoices calculate themselves; a person issues them
  • The website is edited from the inside, without a developer
  • Children's data in the EU, protected and backed up

What works today and what is coming

Working

  • The public website in three languages
  • Enquiries, trial lessons, the family pipeline
  • The members' areas for teachers and administration
  • Register, timetable, cover, events
  • Invoices, tariffs, the invoice editor and payment confirmation
  • Courses: their own calendar for the year, a price per course, sign-up and refunds
  • MobilePay in the cabinet, the family account and paying ahead
  • The membership fee on its own line, an excused absence that costs nothing
  • Community, reviews, moderation

Coming

  • Opening the members' area to all families — switched on in one action
  • Growing the community: families meeting, interest clubs
Deti.dk · Guide

How to use the portal

Short answers to the question “what do I click”: where to start, the usual jobs step by step, and what to do when it does not work.

You are not signed in, so the guest and parent parts are open here — the ones that will become your own experience. The rest open after you sign in, each to its own reader.

Guest

first sign-in

There is no separate guest account any more: from the first sign-in the family sees the same cabinet as the school's parents — children, lessons, account, messages, school, settings. At the top of the home screen, until the family becomes a member, stands the path card: request → trial → membership → enrolment, with the consents. The family becomes a member by itself with the first annual fee (or at enrolment); until then only other families' children, other families' photos and the parents' chats are closed — writing to the school and the teacher works right away.

Sections of the cabinet

Menu sectionWhat is in it
ChildrenThe home screen: your children's cards and, until the family becomes a member, the path card — request → trial → membership → enrolment — with the consents.
LessonsThree tabs: the coming Sundays and reporting an absence, booking a trial or a paid place with the price, the whole school's Sunday grid with your children in the cells.
AccountThe family account: the balance, the account movements, a top-up by bank transfer or MobilePay, the payment history; “How the family account works” is here too.
MessagesThe chat with the school and the group's teacher — works right away; the “📎” button next to the field attaches a photo. The parents' chats open after the membership fee — 250 kr per child per school year; after the trial the cabinet itself shows the “Membership” step with the amount and a button to the account.
SchoolThe events board and the year's calendar — right away; classmates and other families' photos — after the first fee.
SettingsLanguage, your own details and the consents.

When something does not work

  • No children on the home screen. The administrator adds the child to the school's records — write in “Messages” and you will be booked for a trial; after that a trial or a paid place is booked by you from “Lessons”.
  • No classmates or photos in “School”. Until the first annual fee, other families' children, photos and the parents' chats are closed. The fee is charged from the account at the first top-up — after it everything opens by itself.
  • A trial is booked but you want to move it. “Lessons” → “Sunday grid”: in the lesson's cell the child has buttons to move or cancel the booking.

Updated 13 September 2026

Updated 13 September 2026