Ask an AI assistant
Give this page to your favourite AI assistant and ask it how to do things in Rundplan.
Read the Rundplan documentation at https://rundplan.com/docs/ and help me use Rundplan. Answer from that documentation; if something is not covered there, say so instead of guessing.
Getting started#
What Rundplan is#
Rundplan is an event management tool for organizations that run events through an approval chain. A federation, a municipality, a cultural institution: any organization where several layers plan events, someone checks them, someone signs them off, and the result goes out to a website, to calendar subscriptions and to a mobile app.
The calendar you see on the first screen is one view of your events. It is not what Rundplan is. Behind the calendar sit your organization chart, the people with their rights, the approval steps, the publishing channels, the posters and the record of every change.
A few words you will meet everywhere:
| Word | Meaning |
|---|---|
| Instance | Your own copy of Rundplan, with your name, your logo, your organizations and your people. Nobody outside your organization shares it. |
| Organization | Any body in your chart: the federation itself, a regional unit, a member organization, a partner, a venue business. |
| Level | A rung of your hierarchy. You name the levels yourself: Federation, Region, Club, or whatever you call them. |
| Seat | The place a person holds in an organization. A person has one seat. |
| Event | Anything with a date that goes into the plan. A competition, a meeting, a course, a festival day. |
| Frame | A festival or series that groups several events under one name. |
| Approval chain | The ordered list of levels that must sign an event before it counts as approved. |
| Person | A member of the public who uses your mobile app. Persons are not staff accounts; see section 14. |
Your instance#
Your instance lives at its own address, for example https://yourname.rundplan.com. Everything in it belongs to your organization: the data, the settings, the accounts. Staff sign in at that address. The public uses the app at the same address with /app at the end, and the website integration reads from it.
An administrator of your organization decides who gets an account, what each account may do, and how the organization chart looks. Rundplan ships with sensible defaults, so a new instance is usable on day one, but the chart, the levels and the approval chain are yours to shape.
Signing in as staff#
Staff accounts use an e-mail address and a password.
How to sign in#
- Open your instance address in a browser.
- Enter your Email and Password.
- Press Sign in.
If your administrator activated your account with a password they chose, Rundplan asks you to change it before you continue. The new password needs at least 10 characters.
If your administrator sent you an invitation, the mail contains a link where you set your own password. The link works once and expires after 7 days. Ask for a new one if it has expired.
How to reset a forgotten password#
- On the sign-in page, press Forgot password?
- Enter your e-mail address and press Send link.
- Open the mail and follow the link. It is valid for 2 hours and works once.
- Choose a new password and press Save password.
The page always says "If an account exists, an email has been sent", whether or not the address is known. That is deliberate: nobody can use the sign-in page to find out who has an account.
How to request access#
If you have no account yet, the sign-in page carries a Request access link. Fill in your name, your organization if you know it, your e-mail address and a short message. Confirm the request by clicking the link in the mail you receive. An approver of your branch then decides, and you receive an invitation when they say yes. Section 06 describes the process from the approver's side.
Signing in as a member of the public#
Persons who use your mobile app do not have passwords. They sign in with a link sent to their e-mail address. Section 14 describes the app.
The main screens#
Rundplan has three screens for staff, reached from the top bar.
The calendar is the first screen after sign-in. It shows your events in one of four views, with a filter bar above and a legend below. Section 01 covers it.
The Organization page opens with the people icon in the top bar. It shows your organization chart, and, on sports instances, the players, clubs, rankings and data checks. Section 05 covers the chart; section 15 covers the sport registry. You see this page only if you hold the right to manage organizations.
Settings opens with the gear icon. It holds everything an administrator configures: the general card with name, logo, levels, approval chain and season; permissions; event types and categories; custom fields; venues and locations; templates; calendars; conflict rules; registration defaults; mentions; presets. Section 11 covers configuration. You see Settings only if you hold the right to manage configuration.
Two more doors sit in the top bar for those who may use them: the Poster Studio for people who can edit events on instances with the Studio, and Circulars for people who may send them.
The top bar#
From left to right, the top bar carries:
- Your organization's logo and short name.
- The year stepper and Today, in the planner views. Today is greyed out when you are already there.
- The month stepper in Month view. Its label opens a month picker.
- The Year / Season toggle, on instances that keep seasons.
- The view switcher: Plan, Month, Plan with the flip icon, List.
- + New event. When your organization may not file events, the button stays visible but disabled, and its tooltip says why.
On the right: the inbox bell, the Poster Studio icon, circulars, the calendar hub, the Organization page, Settings, and your account menu.
On narrow screens the right-hand icons fold into a menu button. The menu holds the view switcher, the range controls and every action, including the theme toggle.
The filter bar#
Under the top bar sits the filter bar:
- A search box. It matches the event name, the venue, the town and the owning organization.
- Filters for Type, category, Region, Venue, Location, Organizer and Status. Every filter allows several values at once.
- Any custom field an administrator marked as filterable appears as its own filter.
- Views: your saved filter combinations. Section 01 explains them.
- Clear all filters.
On narrow screens the bar folds behind a Filters button with a count of active filters.
The footer#
The footer shows the status chips, the category legend, the day-lens toggle, the dark-mode toggle and a conflict counter. The legend is derived from your event types and categories, so it always matches what the grid draws.
The account menu#
Your initials or photo on the far right open the account menu:
- Notifications: whether Rundplan mails you about approvals, rejections and changes to published events you created. Updates inside the app arrive regardless.
- Change password.
- Sign out.
Your name, phone number, photo and seat are changed by an administrator. If any of these is wrong, ask them.
Language#
Rundplan speaks several languages. Your instance has a default language, set by an administrator under Settings → General → Language. Everyone sees that language. Only people who can open Settings can pick their own, as described next.
People who can open Settings find My language on the same card. It changes the display for them alone, immediately, and is remembered on that device. Dates and numbers follow the chosen language.
Mails from Rundplan arrive in the recipient's language.
Your own vocabulary is not a translation matter. Level names, the word you use for categories, event type names and conflict rule names are written by you, in your words, and appear as you wrote them.
Dark mode#
The dark-mode toggle sits in the footer, and in the menu on narrow screens. It applies to the whole app, including the sign-in screen, and is remembered per browser.
Your first 30 minutes#
A checklist for a new administrator. Each step points to the section that explains it.
- Open Settings → General. Check the name, upload your logo, set the default language and the currency. (Section 11)
- On the same card, under Structure, name your organizational levels and mark which level is the region and which is the club level. (Section 05)
- Set the Approval chain: which levels must sign an event. Leave it empty if one signature from above is enough. (Section 03)
- Open the Organization page and build the chart: your regional units, your member organizations, your partners. (Section 05)
- Under Settings → Event types, create your event types and categories with colours. (Section 11)
- Add people to their organizations from the chart, set their rights, and send invitations. (Section 06)
- Create a first event, submit it, and approve it, so you see the chain at work. (Sections 02 and 03)
- Decide what goes public: which event types may be public, and whether the public feed is on. (Sections 04 and 09)
Common questions#
How do I get back to the calendar from Settings or the Organization page? Press Back to calendar at the top left, or the logo.
Why is the + New event button greyed out? Your organization is not allowed to file events at the moment. Hover the button: the tooltip names the reason. An administrator controls this per organization. See section 05.
Why do I not see Settings or the Organization page? Both need a right your account does not hold. Standard accounts see the calendar only. Ask your administrator if you need more.
Why is the app in the wrong language for me? The instance default applies to everyone who has not chosen otherwise. If you can open Settings, pick My language on the General card. If you cannot, ask an administrator to change the instance default, or to grant you access to Settings.
Does Rundplan work on a phone? The staff screens work in a phone browser. The List view is the intended view on phones. The public app is built for phones and is described in section 14.
Can I keep a tab open all day? Yes. The inbox refreshes itself while the tab is visible, and again whenever you return to it.
Calendar and planner#
What it is#
The calendar is where you read and move your events. It has four views, one grid language for all of them, and a set of helpers: colour by category, conflict marking, drag and drop, saved filters, overlays from outside calendars, and a lens for crowded days.
Everything drawn in the grid comes from the same data the approval chain, the website and the app use. When you move an event here, the record, the feed and the app follow. What they show depends on the event's status, which section 03 explains.
The four views#
Switch views in the top bar.
Plan, the planner. The whole year on one screen. Months are rows, day positions are columns, and the columns are aligned by weekday, so every Saturday sits under every other Saturday. This is the view for spotting free weekends and collisions across a year.
Month. The classic seven-column grid, Monday to Sunday, one month at a time. The month label in the top bar opens a picker with a year stepper, a grid of the twelve months and a Today row.
Plan with the flip icon, the transposed planner. Day positions are rows and the twelve months are columns. Same data as the planner, turned by ninety degrees. Some people read a year better this way.
List. A sortable table of the events your filters allow: date, event, type, category, venue, town, organizer, region and status. Click a column header to sort, click again to reverse. Sorted by date, the list gets month separator rows. The header stays put while you scroll. As the window narrows, columns drop out one by one, and on a phone the rows become cards with a sort picker above them. List is the intended view on phones.
Rundplan remembers your view, your planner mode and the year and month you were looking at, per browser. Reopening the app lands you where you left off.
Year or season#
Instances that keep seasons get a Year / Season toggle in the top bar. Year runs January to December. Season runs from the day after the previous season's closing event to the current season's closing event, which can be eleven to thirteen months. Days outside the season stay blank, and a multi-day event that crosses the boundary is cut at it. Both planner views follow the toggle. Section 11 explains how seasons and closing events are set.
Reading the grid#
Colour means category. An event pill wears the colour of its category, or of its type when the category has no colour of its own. Colour never encodes status, organizer or region.
Status changes the treatment, not the hue:
| Status | Drawn as |
|---|---|
| Published | Solid |
| Approved | Hatched, lightened |
| Private | Hatched, lightened |
| Requested | White with a dotted border |
| Rejected | White with a dotted red border |
| Completed | Solid, faded |
Multi-day events are one continuous bar across the days they cover, never repeated copies. Crossing a month boundary, the bar is cut into two segments. In Month view it wraps at the end of the week.
Frames (festivals and series) are drawn as a neutral band above the days they cover, never as a pill. Their colour is one setting for the whole instance, under Settings → Event types. Frames never count as conflicts.
Events of the same frame are visually joined in the planner and in Month view.
Overlay bands are entries from outside calendars: public holidays, another federation's fixtures, a personal feed. They sit as thin bands at the bottom of the day cell, in the calendar's own colour, with its icon. They are styled as furniture on purpose, so they never read as one of your events. Section 10 explains overlays.
The conflict strip. When a conflict rule fires on a day, the day-number zone becomes a coloured bar in the colour of the rule with the highest priority. Completed events and frames are excluded from conflict detection.
Today is washed yellow, weekends are tinted, days outside the month are muted.
Tooltips. Hover a pill for the event name, its status and "awaiting <level>" while it waits in the chain. Overlay bands and frame bands have their own tooltips.
The legend in the footer is derived from your event types and categories. The first six show inline, the rest fold into a "+N" drop-up.
Working with a day#
One click on a day does the sensible thing:
- No events: the event form opens in create mode, with that date filled in.
- One event: that event opens.
- Two or more: the day overview opens with the events side by side.
A day that holds only a frame band counts as empty.
Clicking the middle of a multi-day bar opens the day you clicked on, not the event's first day.
Right-click an event for a menu: Full edit, Duplicate, every status change you are allowed to make, and Delete. The same menu exists in all three grids and in the List view.
Right-click an empty day for New event — <date>, and Open day where the day has events.
Keyboard. Day cells take focus. Enter or Space opens the day.
How to move an event to another day#
- In any grid view, press and hold the event pill.
- Drag it to the new day and let go.
A multi-day event keeps its length. A published event asks for a written note first, because the change is a live change; see section 03. An approved event you own that already carries a signature asks for a note as well, and goes back to Requested.
The day overview#
The day overview opens on any day with two or more events. It is the "what happens on this day" surface, not only a conflict screen.
At the top: the overlay chips and frame banners of the day. Below: one card per event, side by side, scrolling horizontally. Cards that trip a conflict rule are ringed red; the rest are neutral.
Each card carries a status picker limited to what you may set, a small inline form for name, parent, dates, type, category, venue, town and region with its own Save, a read-only preview of the last two notes, and three buttons: the pencil for the full event form, the speech bubble for the Notes tab, and delete.
+ New event in the header creates an event on that date.
The day lens#
The lens magnifies a planner cell without opening anything. It shows the full event names, the conflict rule's name in its header and the day's overlay bands. It is click-through: you look with it and interact underneath it.
Arm it with the magnifier in the footer, or hold Alt while hovering.
Filtering#
The filter bar sits under the top bar.
- Search matches the event name, the venue name, the town and the owning organization.
- Type, category, Region, Venue, Location, Organizer and Status each allow several values.
- Custom fields an administrator marked as filterable appear as their own filters, with options, Yes/No, or the values in use.
- Clear all filters empties everything.
Filters do not survive a reload on purpose. To keep a combination, save it as a view.
How to save a view#
- Set the filters, and switch on the overlay calendars you want in the view.
- Open Views in the filter bar and press Save view.
- Give it a name and confirm.
The view now appears in the Views picker. Views are yours, per browser: nobody else sees them.
How to update or manage a view#
- With a view active, changing a filter shows a MODIFIED flag. Update current view saves the new state, Discard changes returns to the saved state, Save as new view keeps both.
- Rename and Delete sit on each view row.
- The pinned Default row clears every filter.
A view that names a type, venue or organization deleted since is loaded without those entries, and Rundplan tells you how many were ignored.
Seasons in the planner#
On instances with seasons, the planner opens in Season mode until you choose otherwise. The season's window is derived from the closing events an administrator sets under Settings → General → Season: a season ends with its final, and everything after it belongs to the next season. Section 11 has the details.
The event form shows an event's season as a grey placeholder, derived from its date. You can type a different season on the event to override the derivation.
Rules worth knowing#
- Colour is category, never status. If two events look alike, they share a category.
- A conflict is a warning, not a lock. The rules that fire are yours, set under Settings → Conflict rules.
- Frames never conflict and never count in the conflict counter.
- The grid draws what your account may see. A colleague at another organization may see fewer or more events on the same day; section 04 explains why.
- Pill text and band heights grow on very wide screens on their own. There is no zoom control.
- The grid is keyboard-openable but not keyboard-navigable. There are no global shortcuts and no command palette.
- There is no offline mode.
Common questions#
How do I see the whole year at once? Use Plan, the planner. Twelve rows, one per month, weekday-aligned.
Why does the planner start in June, not January? Your instance keeps seasons and the planner is in Season mode. Press Year in the top bar for January to December.
Why does an event show twice at a month boundary? It does not. A multi-day event crossing the boundary is drawn as two clipped segments of the same bar. Hover either segment: the tooltip names one event.
Why did my filters vanish after a reload? Live filters are not kept on purpose. Save them as a view.
Can I share a view with a colleague? Not yet. Views are personal and live in your browser.
Why is a day marked red when I see no overlap? A conflict rule fired. Open the day overview: the cards that tripped the rule are ringed, and the lens names the rule.
How do I print the calendar? Use the browser's print function for the screen you see, or export the filtered list as a file; section 12 covers export.
Can I see two months side by side? Not as a separate mode. The planner shows all twelve months at once.
Events#
What it is#
An event is anything with a date that belongs in your plan. Rundplan keeps every event in one record: its dates and place, who organizes it, who is credited on it, its files, its poster, the notes people exchanged about it, and a protocol of everything that ever happened to it.
One form serves both creating and editing. Creating shows only what makes sense before a first save. Once the event exists, the remaining tabs open up and the form becomes an ordinary edit.
How to create an event#
- Press + New event in the top bar, or click an empty day, or right-click a day and choose New event — <date>.
- Type the Event name. The start date is beside it, prefilled when you came from a day.
- Choose Event or Frame (Festival). A frame groups other events; see below.
- On the Basics tab, fill the dates, the Type and the category, the venue and town, the organizer and a contact.
- Press Create.
A name, a start date and a type are required. The form says so if one is missing.
Poster, mentions, notes, files and the protocol open up once the event is saved. The form stays open on the same tab.
Tip: Under Details, Use template fills name, type, category, venue, town and region from a template an administrator prepared. Section 11 explains templates.
The tabs of the event form#
The tabs appear in this order. Some show only when they apply.
| Tab | What is on it |
|---|---|
| Basics | Status, start and end date and time, type and category, venue with its address, town, region, organizer, contact person, phone and e-mail, season. |
| Registration | Only when registration is switched on for your instance: registration link and info, opening and closing date, maximum participants, entry fee. |
| Content | Subtitle, description, video link, and the additional information block for the poster. |
| Mentions | Who is credited on the event and in which role. Section 07. |
| Poster | Only on instances with the Poster Studio: which fields go on the poster, the credits by role, the draft line. Section 13. |
| Details | The external event ID and the template. |
| Custom | Only when a custom field applies to this event's type. Section 11. |
| Notes | The note thread. |
| Audit log | The protocol of the event. |
The header holds the event name as an editable title, the start date, and a row of notices that appears only when there is something to say: your organization may not file events, the poster is out of date, the event is live and edits become a revision, "Part of: <frame>", and "Same day:" chips for overlay entries on that date.
The footer holds Save, or Create, or Save revision on a live event, Save and approve for anyone who could sign the event anyway, Cancel, the poster button, Duplicate, and Delete on the far right. Beneath it, a "Created by … · date" line.
The fields#
Name and subtitle. The name is required. The subtitle is optional and appears on posters and in the app.
Dates and times. Start date and time, end date and time. A multi-day event gets an end date after the start. The end can never lie before the start; the form refuses to save that.
Type and category. The type is required. Categories belong to types: choosing a type offers only its categories, and changing the type clears a category that no longer fits, visibly, rather than keeping an impossible pair. Your instance names the category axis in its own word; you may see "Category", "Tier", "Class" or whatever your administrator chose.
Venue, town, region. The venue picker offers the venues of your instance. The address comes from the venue and is read-only on the event. The region is derived from the level your administrator marked as the region level.
Organizer. The owning organization. It decides who approves the event and who can see it while it is in the chain. Most people see their own organization here and cannot change it. People with authority over the whole tree get a picker and can file an event on another organization's behalf.
Contact. A contact person with phone and e-mail. Whether the contact appears on the public side is a choice your administrator makes; see section 04.
Season. Only on instances that keep seasons. The field shows the derived season as a grey placeholder. Type a season to override it.
Registration block. Entry fee with a live preview in your currency, where a zero prints as the word "free". Opening and closing dates, a participant cap where 0 means unlimited, and the registration link. Your administrator sets defaults for these under Settings → Registration.
Content. Description, video link, and Additional information for the poster, up to 500 characters with a live counter.
External event ID. An identifier from another system you use. The form checks it live against the pattern your instance requires and for uniqueness. An invalid ID disables Save.
Quick-creating a venue or town#
You do not need Settings to add a venue while filing an event.
- Open the venue picker on the Basics tab.
- Choose + New venue…, the first entry.
- Type the venue name, pick the town or choose + New town…, add the address.
- Press Add venue.
If a venue of that name already exists in that town, Rundplan selects it instead of making a twin. Quick-create only adds; it never renames, moves or deletes. Settings shows who added each venue and town, so an administrator can tidy up later.
Frames: festivals and series#
A frame groups several events under one name: a festival with a day per event, a series of qualifiers, a championship weekend.
- A frame carries no competition data of its own and never counts as a conflict.
- Its dates are derived from its events unless you Pin dates on the frame.
- One level deep: a frame holds events, never other frames.
- In the grid, a frame is a band above its days, in the frame colour set under Settings → Event types.
- Each event of a frame shows "Part of: <frame>" in its header, and its Parent event field names the frame.
How to create a festival#
- Create a new event and choose Frame (Festival) in the header.
- Name it, pick the type, and save.
- Create the events of the festival, and set the frame as their Parent event.
Publishing a frame#
Publishing a frame that holds events in a less public status asks: apply the change to the whole series, only the frame, or cancel. The change reaches only the events you are allowed to move.
Deleting a frame#
Deleting a frame offers three answers: cancel, Keep events, which detaches them, or Delete whole series.
Private drafts and shared work#
A new event starts as Private: your sandbox, visible to you alone. Nobody else sees it in the calendar, in a list or in a feed. Work on it as long as you like.
When it is ready, submit it: change the status to Requested. From that moment the people above your organization in the chain see it and are asked to sign. Section 03 explains the chain.
Files and media#
Every event can carry files. They live on the Content tab and, for the poster and flyer, on the Basics tab.
- Attachments: up to 12 files per event, PDF, PNG, JPEG or WebP, 15 MB each.
- Poster and Flyer: one image each, separate from the attachments and not counted against the 12. Uploading replaces what was there, in one step, so the public never sees an event without a poster in between.
- Rundplan decides the file type by looking at the file's content, not at its name. SVG is refused everywhere.
- Logos and badges must be raster images; a PDF is a fine attachment but not a logo.
- Files are never edited in place. Replacing one is a delete plus a fresh upload.
- On a published event, adding or removing an attachment is written into the protocol.
Poster images and staleness. An uploaded poster image goes out of date whenever something public about the event changes. The form shows a banner naming the fields that moved. Press I checked this poster to clear it; the confirmation is written into the protocol. Uploading a new image clears it as well. This applies on every instance, with or without the Poster Studio. Section 13 covers posters made in the Studio.
Notes#
The Notes tab is a thread on the event, oldest first, with names, times and highlighted mentions.
- A note is shared or private. Shared notes are visible to everyone who can see the event. Private notes are yours alone and carry a badge.
- Type
@to mention a colleague. Up to eight candidates appear, all people who can see this event. Arrow keys move, Enter or Tab inserts, Escape closes the list. - A mentioned person who has no other authority over the event can read the thread and post shared notes, and is told so. A mention buys the thread, nothing else: no editing, no status change.
- Removing a name from the text removes the mention.
- The day overview previews the last two notes of each event.
Rundplan tells the mentioned person in their inbox and, if they chose mail, by mail.
Duplicating#
Duplicate sits in the event form's footer and in the right-click menu. The copy is named "DUPLICATE: <original name>", starts as Private, and opens for editing. Nothing about the original changes.
Deleting#
Delete sits on the far right of the footer and in the right-click menu.
- Deleting a published event requires a written note.
- Deleting a frame asks whether to keep or delete its events.
- A deleted event is not gone from the record. Rundplan freezes its name, status, owner, dates, who deleted it, the note, the whole protocol, the shared notes and the list of what was attached. The record is kept for audit, and is never purged. There is no screen for it yet; ask your operator if you need to look one up.
The protocol#
The Audit log tab is an append-only record of the event's life: created, submitted, approved with the level that signed, rejected, resubmitted, published, edited, status changed, attachments changed, poster written or removed, poster confirmed, revision saved, submitted, approved, rejected or discarded, and the exceptional cases: published without a current poster, imported without a poster, published over open integrity findings.
Every entry names the person and the time. Click a name to see their person card: organization, ancestry, e-mail and phone.
Editing at the same time as someone else#
When you open an event that a colleague is editing, the form tells you: "<name> is editing this event (since <time>)". You may continue anyway. If both of you save, the second save is told that the first one landed, and asked to Reload their version or Overwrite with mine. Reloading is the default. Nothing is overwritten silently.
Rules worth knowing#
- Name, start date and type are required. Everything else can wait.
- A private event is invisible to everyone but you, including administrators. It is not in any feed, list or app.
- Changing a published event never edits the live event directly. Section 03 explains revisions.
- Colour comes from the category. If your event looks wrong, check its category and type.
- The venue address is the venue's, not the event's. Fix it on the venue.
- A frame's dates follow its events unless pinned. Do not fill dates on a frame that should follow.
- Frames never conflict, never carry registration data, and never appear as pills.
- Files are checked by content. A file with the wrong extension is still refused if its content is not allowed.
- The organizer field decides the approval chain and visibility. Filing on another organization's behalf is for whole-tree holders only.
Common questions#
How do I make a multi-day event? Set an End date after the start date on the Basics tab. The grid draws one bar across the days.
How do I add a day to an existing festival? Create the new event and choose the festival as its Parent event. The frame's dates follow, unless they are pinned.
Why can I not change the organizer? Your seat is at one organization, and your events belong to it. Only people with authority over the whole tree can file for another organization.
Why is the poster banner saying the poster is out of date? A field that the poster shows has changed since the poster was made or uploaded. Bring the poster up to date, or press I checked this poster if the image is still right.
Why can I not upload an SVG logo? SVG files can carry scripts, so Rundplan refuses them everywhere. Use PNG, JPEG or WebP.
Where did my attachment go on the published event? Look in the Audit log: attachment changes on a published event are recorded with who and when.
How do I recover a deleted event? There is no undo. The record of the deletion is kept for audit, but the event is not restored. Duplicate a similar event and re-enter the data.
Can I have a recurring event, every Tuesday in March? Not yet. Create the events one by one, or duplicate one and change the date.
Why does the form ask for a note when I only moved the date? The event is published. Any change to a live event needs a note for the record, and the change goes through approval again. Section 03.
Approval chain, statuses and revisions#
What it is#
Every event in Rundplan has a status, and every status change is a decision by a named person, recorded with the time and, where it matters, a reason. The approval chain is the ordered list of levels in your hierarchy that must sign an event before it counts as approved. Once an event is published, changes to it travel through the chain again, as revisions, so the public never sees an unsigned change.
Which changes a person may make is decided by the server from their rights and their seat. The form only offers what they may do. There is no way around it from the client.
The six statuses#
| Status | Meaning | Who sees it |
|---|---|---|
| Private | The owner's sandbox. | The creator alone. |
| Requested | Submitted, waiting in the chain. | The owner's organization, everyone above it, and whole-tree holders. |
| Approved | Every required signature is in. Planned, not yet public. | Same as Requested. |
| Published | Public. | Everyone, and the website, the feeds, the app. |
| Completed | Over. Still public, drawn faded. | Everyone. |
| Rejected | Sent back with a reason. | The owner's organization and above. |
Each transition needs its own right: proposing, planning, approving, publishing, completing and rejecting are separate capabilities, described in section 06. Changing anything about a published event additionally needs the right to edit published events, or goes the revision route below.
The List view and the inbox show "awaiting <level>" inside the status chip while an event waits.
The approval chain#
An administrator names the levels that must sign, under Settings → General → Approval chain, nearest level first. An event's chain is those levels strictly above its owning organization. Each signs in turn; the last signature moves the event to Approved.
- If the list is empty, the simple rule applies: one signature from anyone above the owner who holds the approval right.
- An event owned by the top organization has nobody above it. Submitting lands it straight in Approved.
- Naming the bottom level is harmless: an event only runs through the levels above its own organization.
- A level the owner's ancestry never passes through is skipped. An organization hanging directly under the top skips the regional level even if it is in the chain.
Approval reaches strictly downward. Nobody signs their own organization's work, and nobody signs sideways or upward. An administrator holds the right, not the ancestry: an administrator seated in a branch still cannot sign that branch's events out of turn. People with authority over the whole tree can sign anywhere.
The chain indicator#
The event form shows the chain: the sequence of levels that must sign, with a green check and a name against each signed step. The person who can sign the open step reads "your signature is due"; everyone else reads "awaiting signature". An event with no chain configured shows nothing.
How to submit an event#
- Open the event. On the Basics tab, set Status to Requested, or use Request from the right-click menu.
- Save.
The first signer is told in their inbox. Creating an event directly as Requested counts as a submission.
How to approve or reject#
From the inbox:
- Open the bell. The Tasks tab lists Awaiting approval: the events you may sign, with the owning organization, "awaiting <level>", and an amber Edited since submission flag when the event changed after it was submitted.
- Press Approve, optionally with a note, or Reject with a reason. The reason is required; the button stays disabled until there is text.
From the event:
- Open the event and press Save and approve, or set the status to Approved and save.
Approving signs one step at a time. Even an administrator who could sign every step signs one link at a time, so the record says which level signed. The protocol entry names the level, for example "Region — reason", not just "approved".
A rejection sends the event back to its owner with the reason. The owner sees it under Rejected — needs revision in their inbox.
How to resubmit#
- Open the rejected event, fix what was asked, and press Save and resubmit. Or press Resubmit in the inbox.
Each submit or resubmit opens a new approval cycle. The signatures of the earlier round no longer count, but they are not deleted. The person who rejected the event is told that the changes landed.
Editing an approved event#
Editing an event that already carries a signature resets it to Requested and asks for a note. The chain starts again. That is the rule for events that are approved but not yet published. Published events follow the revision rules below.
Publishing#
Publishing needs its own right. Set the status to Published in the form, or choose Publish in the right-click menu. Publishing from the menu asks for one acknowledgement before the event goes live.
An event is public only if its type may be public. Event types carry a Can be public switch under Settings → Event types. A type set to "no" never reaches the website, the feeds or the app, even when its events are published. Section 04 has the details.
The poster gate#
An administrator can arm a rule: no publishing without a current poster. While it is on, an event may not be published, and a change to a live one may not be submitted or signed, unless its poster exists and is up to date.
The refusal says why: no poster yet, or the poster still shows old values, naming the fields. If somebody already started the artwork, the refusal says "a draft is in progress" or "a finished draft is waiting for a signature". A finished draft satisfies an approval, because approving promotes the artwork in the same step.
Whoever hits the refusal may override it: write a reason of at least ten characters and acknowledge that the event goes public without a current poster. The override is written into the protocol with the reason, and the branch administrators are told.
Changes to published events: revisions#
Once an event is Published or Completed, "public equals approved" takes over. Changing a public field no longer edits the live event. The change lands on a revision, a draft the public never sees, which goes live when it is approved.
The form tells you: "This event is live. Changes to public fields are saved as a revision and go live after approval." The footer button reads Save revision. Every field the revision touches is ringed amber and marked Revision.
What needs a full signature and what needs a light one#
| Kind | Fields | Signature |
|---|---|---|
| Structural | Start and end date and time, venue, town, region, owning organization, type, category, parent frame, event-or-frame. | The same signer set a fresh proposal would get, plus a conflict re-check. |
| Descriptive | Name, subtitle, description, registration text, link and block, video, contact name, phone and e-mail, season, poster text and fields, mentions. | One light signature from the nearest level above the owner that has approvers. |
A light signature never comes from the person who submitted the change. If they sit at that level, the search moves one link up. Whole-tree holders are always in the signer set, so no branch is ever stranded.
An administrator can change both switches under Settings → General → Changes to published events: whether only public fields or every field trigger a revision, and whether light approval is on. The defaults are public fields and light approval on.
Internal fields, the external ID, attachments and custom fields marked internal, save straight through with a protocol entry and a note.
How to propose a change to a live event#
- Open the event and edit the field.
- Press Save revision. The live event is untouched.
- Press Submit for approval in the banner. The approvers are told.
You can keep working on the draft before submitting. Typing a field back to its live value withdraws that change; an emptied revision disappears.
Who may open a revision: anyone who may edit the event, and additionally any person seated at the owning organization who holds the right to propose. The owner can always propose a change to their own live event.
How to approve a change to a live event#
- In the inbox, under Changes to live events awaiting your approval, open the event. Or open it from the calendar: it carries a Revision pending badge.
- Press View changes. You see each field with the live value struck through and the new value in bold, and, for a structural change, the conflicts the change would create, computed by the same engine the planner uses.
- Press Approve, Reject with a reason, or leave it.
A rejected revision is kept as a draft for rework. Discard revision throws it away; the live event is unaffected.
Save and approve does both steps for anyone who could sign anyway. An administrator editing their own top organization's event is their own signature.
You cannot approve your own revision.
Hot fixes#
People holding the right to edit published events keep the direct path: their edit lands on the live event immediately, with a note and a protocol entry. Use it for typos, not for changes that need a second pair of eyes.
The live-change note#
Editing, changing the status of, or deleting a published event requires a written note. The server enforces this; the form only asks for it. Leaving Published via the status picker opens the note dialog instead of failing.
What the public sees at each stage#
| Status | Website and feeds | App |
|---|---|---|
| Private, Requested, Approved, Rejected | Nothing. | Nothing. |
| Published | The event, if its type may be public. | The event. |
| Completed | The event, for twelve months after it ended. | The event, as past. |
| Published with a pending revision | The live version. The revision is invisible. | The live version. |
Rules worth knowing#
- One signature per step, always by a named person. There is no "approve all".
- Rejection needs a reason. The reason travels to the owner and into the protocol.
- A resubmit starts a new cycle. Old signatures are kept in the record but no longer count.
- Nobody signs their own organization's work, and nobody signs their own words on a revision.
- The public always sees the last approved state. A pending revision changes nothing until it is signed.
- Every workflow action runs through one dialog that names the event, takes a note, and colours the confirm button red for destructive actions.
- A person with no authority over an event is offered no status change at all.
- There is no time-based escalation and no reminder on the chain yet. The only ways out are an approver's decision or the owner pulling the event back to Private.
- Revisions are pending changes, not a version history. The protocol says what changed, but there is no rollback to an earlier version.
Common questions#
Why can I not approve my own event? Approval reaches downward only. Your own organization's events are signed by the levels above you.
Why does the event say "awaiting Region" when I am the regional administrator? Your seat is not above the owner, or your account holds no approval right for events. Check with the federation administrator. Also, the region only signs events of organizations below it in the chart.
I changed the date of a published event and nothing happened on the website. The change is a revision waiting for a signature. Open the event: the banner says who has to sign. The website updates when the revision is approved.
Can I withdraw a submitted event? Yes, set it back to Private. The approvers see it disappear from their tasks.
Why is my colleague asked to sign a change I made, and not me? A revision is never signed by its author. The nearest level above with approvers signs a wording change; the full chain signs a structural one.
What is the difference between Approved and Published? Approved means every required signature is in. Published means it is public. Publishing is a separate step with its own right, so an event can be planned internally long before it goes out.
Why was I refused when publishing, with a message about the poster? The poster gate is armed on your instance. Bring the poster up to date, or override with a written reason.
Can a completed event be edited? Yes, the same way as a published one: through a revision, or directly by someone with the right to edit published events.
Visibility and authority#
What it is#
Two questions decide what a person sees and may do in Rundplan: where their seat is in the organization chart, and which rights their account holds. Every answer is given by the server. The screens hide what you cannot do; the server refuses it regardless. This section explains the rules, so that nobody is surprised by what a colleague sees or does not see.
Three audiences#
The public: the website, the calendar feeds and the mobile app. They see published and completed events whose type may be public. Nothing else.
Staff of your organization: people with an account. What they see depends on their seat, as described below.
Administrators and whole-tree holders: federation administrators, people seated at the top organization, and people with no seat. They see everything.
Public, internal and private events#
Rundplan has no single "visibility" field on an event. Whether an event reaches the public is the result of three things:
- Its status. Only Published and Completed events are public. Section 03.
- Its type. Each event type carries a Can be public switch, under Settings → Event types. A type set to "no" never appears on the website, the feeds or the app, even when its events are published. Use it for leagues, meetings and anything that belongs on the internal calendar only. Internal visibility is unaffected.
- The public feed switch. Under Settings → Calendars, Publish this calendar turns the public feed on or off for the whole instance. Section 09.
That gives three kinds of events in practice:
| Kind | How to get it | Who sees it |
|---|---|---|
| Public | Published, on a type that may be public, with the feed on. | Everyone. |
| Internal | Published on a type that may not be public. | Staff, by seat. Never the public. |
| Private | Status Private. | The creator alone. |
A private event is invisible even to administrators. It is not in any list, feed or export.
Completed events stay public for twelve months after they ended, so a full competition year stays readable.
What the public sees of an event#
For a public event the website, the feeds and the app show: name, subtitle, dates and times, type and category with their colours, venue with its town and street address, region, organizer with its logo, the frame it belongs to, registration information and link, the description, the poster, and the contact block with name, e-mail and phone, when they are filled in.
They never show: notes, the protocol, the external ID, attachments other than the poster, custom fields unless an administrator exposed them, who created or approved the event, and anything about revisions.
Tip: Fill the contact fields with the organization's official contact, not a person's private phone. Whatever is in them goes public with the event.
What staff see, by seat#
A staff account sits at one organization in the chart. The rule is:
- Everyone sees published and completed events of the whole instance.
- A person seated at an organization sees everything their own organization owns, and everything owned by organizations below it, in every status except Private.
- A person always sees the events they created, in every status.
- People seated at the top organization, and people with no seat, see everything.
So a regional administrator sees the requested and approved events of the whole region, and only the published ones of the other regions. A club secretary sees their club's drafts in the chain, and the published calendar of everyone else.
Private notes are visible to their author only. Shared notes are visible to everyone who can see the event.
The "see only own events" restriction#
An administrator can place a deliberate restriction on an account: See only own events. The account then sees the events it created and nothing else. Use it for an external helper who files events for one purpose.
Authority: who may act#
Rights are held by the account, described in section 06. Where they reach is decided by the seat:
- Approving events and approving account requests reach strictly downward: the organizations below your own, never your own, never sideways, never upward.
- Sending circulars, managing mentions and parties and administering organizations reach downward including your own organization.
- Whole-tree authority belongs to federation administrators, the operator, people seated at the top, and people with no seat. It reaches everything.
Administrator is a flag, not an ancestry. An administrator seated in a branch holds every right, but still cannot sign their own branch's work out of turn.
Published events#
Once an event is published or completed, only a person holding the right to edit published events changes it directly. Everyone else proposes a change through a revision, as section 03 describes. The owner's organization can always propose.
When your organization may not file events#
An organization can be barred from filing events without leaving the chart. Three things cause it:
- The organization's Events setting under its details reads Cannot create. An administrator sets this for a body that holds people rather than tournaments, or for one under sanction.
- The organization's affiliation Status is Requested, Paused or Suspended. Only an affiliated organization may file events. Restoring the status restores the setting.
- The setting reads Proposals only: the organization's own accounts can file drafts and submit them, but never approve or publish on their own. Typical for venue businesses.
In all three cases the + New event button stays visible but disabled, with the reason in its tooltip, and the event form shows a banner. The server refuses a create, a filing on behalf and an import alike. Everything the organization already owns stays untouched.
Access requests#
The sign-in page carries Request access. A request travels to the people who hold the right to approve account requests over the named organization's branch. A request naming no organization lands in the Independents group. Requests are visible only within the approver's authority; a request outside your branch does not exist as far as you can tell. Section 06 describes the approval.
Not found, never forbidden#
An event, circular, party or attachment you may not see answers "not found", not "forbidden". Nobody can use Rundplan to find out whether something exists. Configuration screens answer honestly that you lack the right, because your organization's structure is not a secret.
Rules worth knowing#
- Status and type together decide public visibility. Check both when an event is missing from the website.
- Private means invisible to everyone, administrators included.
- Seat decides reach. Rights decide what. Both are needed for an action.
- Being mentioned in a note grants the thread and nothing else.
- Deep links are visibility-checked. A link to an event you may not see behaves as if the event did not exist.
- Everything the public sees comes from the last approved state. Pending revisions are invisible.
Common questions#
Why is a published event not on the website? Its type may not be public, or the public feed is off. Check Can be public on the type under Settings → Event types, and Publish this calendar under Settings → Calendars.
Why does my colleague in another region not see my requested event? Requested and approved events are visible within the owning branch and above. Another region is sideways. They will see it once it is published.
Why can the administrator not see my draft? Private events are yours alone, by design. Submit it, and it becomes visible in the chain.
How do I hide an event from the public but keep it in the calendar? Give it a type that may not be public, or keep it in Approved and do not publish it.
Can I let an external person file events without seeing our whole calendar? Give them an account with the See only own events restriction, and set their organization to Proposals only.
Somebody sent me a link and it says not found. You may not see that event, or it was deleted. Rundplan does not say which. Ask the sender.
Does the public see the contact e-mail? Yes, when it is filled in. So does the phone number. Use official contacts.
Organizations and the org chart#
What it is#
The organization chart is the backbone of Rundplan. Every event is owned by an organization, every account sits in one, and the chart decides who approves what and who sees what. You draw the chart as your organization really is: as many levels as you have, from the top down to the smallest unit, with partners, venue businesses and independents beside your own structure.
Two places matter:
- Settings → General → Structure is where an administrator names the levels, the rungs of the ladder.
- The Organization page, opened with the people icon in the top bar, is where the organizations themselves are created, edited and moved.
Levels#
A level is a rung: Federation, Region, Club, or whatever you call them. Your instance has between one and eight levels, ordered top to bottom. Levels only set depths; the organizations are created on the Organization page.
Two levels carry a mark:
- The Region filter level. Its organizations fill the calendar's region filter, the saved views and the Region field on events.
- The Club level. Its club-kind organizations are the clubs of the sport registry and the clubs players can belong to. Usually the bottom level.
Which level counts as "the club" is a mark, never a name. Verein, Club or Organizator all work alike.
How to name your levels#
- Open Settings → General and scroll to Structure.
- Under Organizational levels, type a name per level. Add level appends one at the bottom.
- Use Insert a level above or Insert a level below on a level to add one in the middle. Inserting only renumbers the levels below; no organization moves to a different parent.
- Mark the region level and the club level.
- Save.
Renaming and inserting are always safe. Delete level works only while no organization sits on that level; the card says how many do.
Kinds of organizations#
Every organization has a Kind:
| Kind | What it is | Where it hangs |
|---|---|---|
| Club | A member organization. Holds people, files events, may hold players. | On any level, usually the club level. |
| External organizer | A body outside your membership that files events through your chain: a promoter, a partner federation. | Under the top organization or under a club. |
| Establishment | A venue business: a pub, a bar, a hall. Usually files proposals only. | Under the top organization or under a club. |
| Independents group | The one catch-all for people not placed yet. Exists at most once. Created when first needed. | Directly under the top. |
Kinds hang wherever approval should flow from. An external organizer under a club has that club above it in the chain; one under the top has only the top.
On the chart, external organizers, establishments and independents are grouped under their own captions.
The kind of a club or of the independents group is fixed for its life. An external organizer can be re-kinded to establishment and back.
The Organization page#
The page has a side panel on the left with a view switcher, a search box and filters, and the content on the right.
Views: Chart, and on sports instances Players, Clubs, Rankings, Integrity and People. Section 15 covers the registry views; section 14 covers the People view, the members of the public who use the app.
The Chart shows the whole tree. Each row carries the organization's logo, name, level, its status pill, its events pill when it may not file, the seat usage, and the rights count of its people. Expand a row to see its people and its sub-organizations.
Filters: Status, May organize, Type. Reset filters clears them.
Search matches organizations and people.
You see the page if you hold the right to manage organizations. Federation administrators and branch administrators hold it. Your reach is your own branch: your organization and everything below it.
How to add an organization#
- On the Chart, find the parent and press Add sub-organization on its row. For a body directly under the top, use the door on the top row.
- In New organization, choose the Kind and the Level. The level must lie below the parent's, not necessarily the next one down: an organization may hang directly off a higher one.
- Fill the Name, Short name and Short code.
- Optional: Website, Contact and Contact email, Notes, External ID, Seats (max).
- Save. The logos can be uploaded once the organization is saved.
Per organization#
Open Details on a row to edit an organization.
Name, short name, short code. The short name appears where space is tight; the short code where a code is expected.
Level and parent. The level is fixed once saved. Moving an organization to another parent keeps its level and must land inside your own branch, strictly below the new parent.
Logo, light and dark. Uploaded to the organization and inherited everywhere it appears: as event organizer, on posters, on the chart, in the app. Two slots, one per theme, with fallback to the other.
Website, contact, contact e-mail, notes. Internal information, except that clubs expose a public profile; see section 15.
External ID. For matching against your own systems. Unique when set.
Seats (max). The number of accounts the organization may hold. The default is 3. The chart shows seats used and available. Moving a person into a full organization is refused.
Status. The affiliation status: Affiliated, Requested, Paused, Suspended, each with a Since date and a short Reason. Only an affiliated organization may file events; the other three switch that off without taking anything else away. Seats, visibility and everything the organization owns stay untouched. For establishments, external organizers and the independents group the same state reads Active.
Events. What the organization's own accounts may do with events: Cannot create, Proposals only, or Full (per roles). Proposals only means drafts and submissions, never planning or publishing on their own; every event waits for approval up the chain. Approvers above are never affected. A non-affiliated status switches this off while it lasts; the stored setting returns when the status returns to affiliated.
Approval chain. A read-only line showing which levels sign this organization's events.
How to move an organization#
- Open Details on the row.
- Change the Parent.
- Save.
The move keeps the level, must stay inside your branch, and must land strictly below the new parent. The organization's people, events and everything it owns move with it.
How to bar an organization from filing events#
Two ways, for two reasons:
- A sanction, or a body that holds people rather than tournaments: set Events to Cannot create.
- A membership problem: set the Status to Paused or Suspended with a date and a reason. Filing is off until the status is Affiliated again.
Both are enforced by the server on create, on filing on behalf, and on import.
How to delete an organization#
- Open Details on the row and press Delete.
Deleting is refused while the organization still owns anything: sub-organizations, users, events, mentions pool entries, players, a club profile, account requests, placement rules, event credits or placements. The refusal names each blocker with a count. Move or delete those first. Nothing is deleted by cascade.
The independents group#
Some people cannot be placed yet: an account request naming no organization, a player whose club is unknown. They land in the Independents group. It is created when first needed, holds up to 999 seats, and may not file events by default. An administrator can rename or move it like any other organization, but there is only ever one.
Organization breadcrumbs and person cards#
Anywhere an organization appears, an ancestry line shows its path from the top. For people who can open the Organization page the line deep-links into the right row of the chart.
Click a person's name anywhere in the app to see their person card: photo, organization with its level, the full ancestry, e-mail and phone as links, and whether the account is active.
Clubs on sports instances#
On an instance with the sport registry, an organization of kind club at the club level carries a club profile beside its organization details: licence number and dates, notes for the administration, and a public profile with playing address, play days, founding year, president, club phone and e-mail, website, social links and a description. The pencil on a club row opens one dialog with both halves. Section 15 describes the registry, and what of the profile is public.
Rules worth knowing#
- Levels are a ladder of depths. Two levels cannot share a rung. If you need pubs beside clubs, use the establishment kind, not a level.
- An organization's level never changes. Create a new one if you need it elsewhere.
- Moves stay inside your own branch. A federation administrator can move anything.
- Barring an organization touches nothing it already owns.
- Deleting is refused with a list, never cascaded.
- The chart is not secret. Configuration screens say plainly when you lack the right.
- Seat caps are checked on every move and on every account creation.
Common questions#
How many levels should I create? As many as sign or own something. A level nobody sits on and nobody signs at only adds clicks.
We are two-tier, club and federation. Where do venue businesses go? Beside the clubs, under the top, as establishments. If you want each club to approve its own pubs, add a level below Club first, then hang the establishments under the clubs.
Why can I not delete this organization? It still owns something. The refusal lists what. Move the people, reassign the events, delete the entries, then try again.
Why does the organization show "No events"? Its Events setting is Cannot create, or its status is not Affiliated. Open Details: the reason is on the card.
Can an organization hang directly under the top even if a level is in between? Yes. The level must be below the parent's, not the next one. The approval chain skips the levels the ancestry never passes through.
Who can create organizations? Federation administrators anywhere, branch administrators inside their own branch.
Where do I set who may approve for an organization? Approval is a right of a person, not a property of an organization. Section 06.
People, accounts and permissions#
What it is#
Two kinds of people use Rundplan.
Staff have an account: a name, an e-mail address, a seat in an organization, and a set of rights. They sign in with a password and work in the calendar, the Organization page and Settings. This section is about them.
Persons are members of the public who use your mobile app. They have no password and no rights in the staff sense. Section 14 describes them. On the Organization page, the People view lists them for administrators.
Accounts#
The login is the person. One identity, no personas. A person can exist without a login: a profile that appears in the chart and can be credited, but cannot sign in. An administrator activates the login later.
Every account has:
- Name, Email, Phone, Photo. Photos fall back to coloured initials, so a directory without photos still reads well.
- Organization: the seat. Chosen with a cascading picker, one select per level, with "assign here" at every depth, so a person can sit at a regional body rather than a leaf. The full ancestry shows underneath.
- Active or Inactive.
- Login: active or none.
- Admin flag and a list of rights.
The chart shows a login badge on each person, so you see at a glance who can sign in.
How to add a person#
Federation administrators add people. Branch administrators administer organizations, not accounts.
- On the Organization page, find the organization and press Add user on its row.
- In Add person, fill Name and Email. Phone and photo are optional.
- Check the Organization path. Change it with the cascading picker if the seat should be elsewhere.
- On the Permissions tab, pick a role. Standard is the default.
- Save.
The login can be activated once the person is saved. A full organization refuses: "Seat limit reached".
How to give a person a login#
Two ways, on the person's Profile tab under Login:
- Send invitation: Rundplan mails a link where the person sets their own password. The link works once and expires after 7 days; issuing a new one invalidates the old.
- Set password / activate login: you type a password and share it securely. The person is forced to change it at first sign-in.
Invitations need mail on the instance. Setting a password works everywhere.
How to edit a person#
Open the profile three ways: from the Permissions register in Settings, from the person's row in the chart, or by clicking their name anywhere in the app and pressing edit on the person card.
The Profile tab holds the personal data and the login. The Permissions tab holds the role.
Closing with unsaved changes asks whether to discard.
Moving a person to another organization#
Change the Organization path and save. The target must have a free seat; the seat cap is re-checked on every move.
Deactivating a person#
Set Active off and save. Every session of that person ends immediately, not at expiry. The person's name stays on everything they did.
Deleting a person#
Delete on the profile removes the person and frees their seat. It cannot be undone. You cannot delete yourself, you cannot delete the last administrator, and nobody can delete or change the operator's account.
Rights#
There are no fixed roles. Each account carries an Admin flag and a flat list of rights, called capabilities. The rights, grouped as the Permissions tab groups them:
Event workflow
- Propose events: create drafts and submit them.
- Plan events: move an event to Approved.
- Approve events: sign events from organizations below your own.
- Publish events: move an event to Published.
- Complete events: mark an event Completed.
- Approve account requests: decide access requests from organizations below your own.
Editing and deleting
- Edit published events: change a live event directly, without a revision.
- Edit others' events and Delete others' events: act on events you did not create, within your reach.
Visibility and tools
- See only own events: a restriction, not a grant. The account sees the events it created and nothing else.
- Add personal calendars: overlay calendars of your own on the planner. Section 10.
- Send circulars: to your own organization and everything below it. Section 08.
- Manage sponsors: the mentions pool and placements in your own branch. Section 07.
Administration
- Manage organizations: the Organization page and the org chart in your own branch.
- Manage configuration: Settings.
Admin is a separate switch. An administrator holds every right in the instance; the individual rights no longer restrict them. Admin is never part of a bundle.
Where a right reaches is decided by the seat; section 04 explains it. In short: approving reaches strictly downward, administering reaches downward including your own organization, and an administrator reaches everything but still cannot sign their own branch's work out of turn.
Role bundles#
The Permissions tab offers three bundles, named after your own level names. The bundle a person "is in" is derived from their rights, never stored: strip someone back and they stop being an approver.
Standard. Propose events and submit them up the chain, notes on own events, the published calendar. The default for every account.
<Level> — Approvals. Standard plus decisions on what comes up from below, never on their own level. Two switches, granted separately: Approve events from below and Approve account requests from below.
<Level>-Admin. Approvals plus the Organization page for their own branch. Two more switches: Send circulars to their own branch and Manage sponsors in their own branch. User accounts stay with the federation administrators. Settings stays with people holding Manage configuration.
Custom. Shown when the rights were edited by hand and match no bundle.
Show individual permissions opens the raw list in its four groups. It opens on its own for a custom set.
The first-grant confirmation#
Saving a person with more than a Standard account asks once: "<name> currently has a standard account. Saving gives them: …", listing exactly what the save grants. Press Grant to confirm.
The Permissions register#
Settings → Permissions is not a user table. It is a derived register of authority: it lists only people whose rights differ from Standard in either direction. Administrators, anyone granted extra, and anyone deliberately restricted. Set a person back to Standard and their row disappears. Everyone else is managed from the chart.
Each row names the person, their organization and their rights, or "(all rights)" for administrators.
Only federation administrators see this tab.
Access requests#
The sign-in page carries Request access, so people can ask for an account without writing to you.
- The person fills name, organization if known, e-mail, and a message.
- They confirm the e-mail address by clicking a link. Only a confirmed request reaches anyone.
- The request appears under Access requests in the inbox of everyone holding Approve account requests over that branch. A request naming no organization lands in the Independents group.
- Approve creates the account with the Standard bundle and mails an invitation, in one click, with an optional comment. Reject takes a reason, which is shared with the person.
The other approvers of the branch are told that the request is off their plate, with name and organization but never the address. At decision time the server re-checks that the address is still free and the organization still has a seat.
Approving needs mail on the instance, because the invitation is the point. Rejecting works without.
A request outside your branch does not exist as far as you can tell.
What each person can do for themselves#
From the account menu: Notifications, whether Rundplan mails them about their events, and Change password. Changing your own password signs out every other device you are signed in on.
Name, phone, photo, seat and rights are an administrator's to change.
Sign-in security, as a user sees it#
- A wrong e-mail and a wrong password get the same answer, in wording and in timing. Nobody can learn who has an account.
- Too many attempts lock the form for a while.
- Reset links last 2 hours and work once. Invitation links last 7 days and work once.
- A deactivated account is signed out everywhere at once.
- Last sign-in is recorded and shown on the profile.
Rules worth knowing#
- One person, one seat, one login.
- Standard is the default and needs no register entry.
- Bundles are derived. There is nothing to "assign" besides rights.
- Branch administrators manage organizations, not accounts.
- Admin is a flag. It grants rights, not reach: an administrator seated in a branch still cannot sign that branch's own events.
- You cannot delete yourself, the last administrator, or the operator.
- Seat caps are checked on creation and on every move.
Common questions#
How do I make someone an approver for their region? Open their profile, go to Permissions, pick <Region> — Approvals and switch on Approve events from below. Their seat must be at the regional organization; they then sign events of the organizations below it.
Why can the new approver not approve events of their own club? Approval reaches strictly downward. Their own organization's events are signed by the level above.
Why is a person not in the Permissions register? They have a Standard account. The register lists only people whose rights differ from Standard. Find them in the chart.
Can a branch administrator create accounts? No. Accounts are created by federation administrators. A branch administrator creates and edits organizations in their branch.
How do I let someone change our settings? Grant Manage configuration on the Permissions tab, or make them an administrator.
A person left. What do I do? Set them Inactive. Their sessions end at once, their name stays on the record. Delete only if you want the seat freed and the profile gone.
Can two people share one account? No. Every action is recorded under a name. Give each person their own account.
How does someone get a password if we have no mail set up? Use Set password / activate login and share the password securely. The person must change it on first sign-in.
Partners, sponsors and mentions#
What it is#
A mention is a credit on an event: this organization co-organizes it, that ministry patronizes it, this company sponsors it. Mentions are the one list of who is credited, they appear on posters and, where your instance shows them, on the public side, and they follow rules you set once instead of being typed on every event.
Three building blocks:
- Parties: external bodies that are not in your organization chart. A sports agency, a town hall, a brewery. They live in a pool.
- Placements: a party or organization attached at an organization, so it is credited on every event that organization owns.
- Placement rules: standing rules with a condition, such as "this sponsor on every category 1 event in my branch".
The five roles#
Every mention carries one role:
| Role | Reads on the poster as |
|---|---|
| Co-organizer | In the organizer row, beside the owner. |
| Under the auspices of | Patronage. |
| Supported by | Support. |
| Partner | Partner. |
| Sponsor | Sponsor. |
The event's Mentions tab#
The Mentions tab of the event form lists every credit on the event, grouped by where it came from:
- Federation-wide: placed at the top organization. Managed under Settings → Mentions.
- From <organization>: placed at an organization above the event's owner. Managed by that organization's administrators.
- This event's own mentions: added here.
Each credit shows the logo, the name, the role and a chip naming its source. A credit put there by a rule is locked: a padlock instead of a remove button, and the full sentence explaining why, for example "Federation rule — Category: 1, 2. It cannot be removed here."
How to credit somebody on an event#
- Open the event, go to Mentions, press Add mention.
- Type a name. One search box covers organizations of the chart and the party pool; each result is badged, and parties show their owner. Organizations already credited and the event's own organizer are left out.
- Pick the result, choose the Role, and confirm. The credit is added straight away.
If the name is not in the pool, Create and add makes a new party on the spot, with name, website and a light logo. If somebody in your branch already added that name, Rundplan offers Use the existing one instead of a near-twin.
Crediting is not an event edit. It never costs a live-change note and never resets an approved event.
Reordering and removing#
Drag the credits to reorder them. Remove from this event takes an event-level credit away. Credits from a placement or a rule cannot be removed on the event.
Up to 40 credits per event.
Parties: the pool#
Settings → Mentions holds the party pool. One pool per instance, with each party owned by an organization and pooled by scope: a club sees its own parties and the federation's; the federation's parties are available everywhere.
A party has a Name, a Website, a Logo (light theme) and a Logo (dark theme), an Active switch, and its placements.
How to add a party#
- Open Settings → Mentions and press New party.
- Fill the name and the website. A bare address gets
https://added. - Upload the light logo, and the dark logo. PNG, JPEG or WebP, high resolution, PNG with transparency preferred. SVG is not accepted. The form previews the light logo on a white band and the dark one on a dark band, so each is rehearsed on the background it is for. Logos are never re-encoded, so transparency survives.
- Optional: place it at an organization right away.
- Save.
By default both logo variants are required before a party can be placed anywhere. An administrator can relax that to one logo under Require both logo variants.
The list#
The list shows each party's light logo, name and website, owner, who added it, chips reading where it is placed and in which role ("Club X · Sponsor", "<Federation>-wide · Partner", "Event · Sponsor ×3"), the active switch, edit and delete. Federation administrators see the rows grouped by owning organization.
Filters: by owner, and by where the party is placed: federation-wide, at an organization, on an event, or Nowhere yet. Plus search.
Deactivating and deleting#
An inactive party is no longer offered anywhere and is not placed on new posters. Saved posters and the placements it already holds stay untouched.
Deleting a party that is placed anywhere or frozen into a saved poster is refused. The dialog stays open, shows where the party is used at that moment, and offers Deactivate instead. No live poster ever loses a logo.
Up to 300 parties per instance.
Placements#
A placement attaches a party at an organization. Every event that organization or its subtree owns is credited, in the role picked for the placement.
- Placed at the top organization, the party rides on every poster in the instance.
- Placed at a region, on every event of that region's organizations.
- Placed at a club, on that club's events.
Each level manages its own placements. On the party form, Placed at lists them; Add organization… adds one; the sentence beneath says what it means: "<Organization> — federation-wide: on every event's poster, as 'Sponsor'."
Placement rules#
A rule credits a party or an organization on every event in your branch that matches a condition. Rules are for the standing agreements: the federation's main sponsor on every national event, the regional partner on every category 2 event in the region.
Rules live under Settings → Mentions → Placement rules. Federation and branch administrators write them.
How to add a rule#
- Press Add rule.
- Under Credited, search organizations and parties and pick one.
- Pick the Role.
- Pick the condition: All events, Event type with the types, the category axis with the categories, or Custom field with the values of a select field. One condition per rule, no combinations. That is deliberate: the person writing these is a secretary, not a programmer.
- Save.
A rule's reach is your own seat's reach and cannot be widened: a branch administrator's rule covers their branch, a federation administrator's rule covers everything. Need a party on everything without conditions? Place it at the top organization instead.
Rules can be reordered. A rule written by another level shows greyed, with "Another level's rule — only its own administrators can change it." Everybody can read every rule, on purpose: a locked credit whose reason nobody can see is a support ticket.
Up to 200 rules per instance.
What a rule does to events and posters#
Credits from a rule arrive locked on the event, with the reason: "Federation rule: Category 1–2" or "Branch rule". The organizer cannot remove them.
A rule change, a placement change, or a party being activated or deactivated marks the posters it reaches as out of date, so nobody publishes artwork that predates the rule. Renaming a party deliberately does not.
Credits with no logo fall back to the party's name on the poster, so a poster is never silently short a credit.
Mentions on the event and in notes#
Two things are called mentions in Rundplan. The credits described here, on the Mentions tab. And the @ in a note, which summons a colleague into the thread; section 02 describes that. They have nothing to do with each other.
Rules worth knowing#
- One search box, organizations and parties alike. The badge tells them apart.
- Parties need a logo before they can be placed. Both variants by default.
- Placement at the top reaches everything. Rules add a condition.
- A rule reaches as far as its author's seat, never further.
- Everybody can read every rule. Only writing is restricted.
- Locked credits carry their reason in a sentence.
- Crediting never resets an approved event and never asks for a live-change note.
- Deleting a used party is refused; deactivate instead.
- Caps: 300 parties, 40 credits per event, 200 rules.
Common questions#
How do I put our main sponsor on every poster? Add the sponsor as a party under Settings → Mentions, and place it at the top organization with the role Sponsor.
How do I put a sponsor only on category 1 events? Write a placement rule: credited = the sponsor, role = Sponsor, condition = the category axis with category 1.
Why can I not remove a sponsor from my event? A placement or a rule above you put it there. The padlock's sentence names the source. Ask that level's administrators.
The sponsor's logo looks wrong on the dark poster. Upload a dark-theme logo variant on the party. The form previews both variants on their own bands.
Why is the party greyed in the picker? It is inactive, or it lacks the required logo. Open it in Settings → Mentions.
Can a club add its own sponsors? Yes, if a person there holds Manage sponsors. Their parties are visible within their branch and the federation's parties are available to them.
Why did all our posters go out of date after I edited a rule? Because the rule reaches them, and their artwork predates the change. Open each poster once to refresh it, or press "I checked this poster" where the image is still right.
Notifications, tasks and circulars#
What it is#
Rundplan tells the right people what happened to the events they are involved in, and gives them one place to act on it. The bell in the top bar opens the Inbox. It has two tabs: Tasks, the things that wait for your decision, and Updates, the record of what happened around your events. Every event also carries its own note thread, and administrators can send Circulars to a whole branch of the organization.
Everything you read in the inbox is written in your own language. Rundplan stores facts, not sentences, and renders the sentence for each reader.
The Inbox#
How to open it#
- Click the bell in the top bar. The Inbox opens in the middle of the screen.
- Rundplan picks the tab for you: Tasks when something waits for you, otherwise Updates.
- The badge on the bell counts tasks first. Open tasks show in amber. When there are none, unread updates show in red.
The Tasks tab#
The Tasks tab shows only the sections that have something in them:
| Section | What it holds | What you can do |
|---|---|---|
| Awaiting approval | Proposed events you may sign, with the owning organization and which level is awaited | Approve with an optional note, or Reject with a required note, right in the row |
| Rejected — needs revision | Your own events that were rejected, with the reason | Resubmit after you fixed them |
| Changes to live events awaiting your approval | Pending revisions of published events, marked Structural or Descriptive | Approve or Reject in the row |
| Circulars awaiting your confirmation | Circulars the sender asked you to acknowledge | Open the reading view; confirming happens there |
| Access requests | People who asked for an account, with name, e-mail, organization and their message | Approve or Reject with a required reason |
| Player claims | People in the public app who say "This is me" about a player in the registry | Approve or Reject with a note (see the sports add-on section) |
An event that was edited after it was submitted carries the amber flag Edited since submission, so an approver sees at once that the proposal moved.
After you act on a task, Rundplan returns you to the inbox. Deciding three items costs one click on the bell.
The Updates tab#
Updates is the activity feed. It lists what happened, newest first, 30 rows per page, with Load older at the bottom and Mark all read at the top.
- Click a row and Rundplan marks it read and takes you to the thing it is about. A circular opens its reading view. A note or a mention opens the event on its Notes tab. Anything else opens the event.
- Timestamps younger than six days read as "3 hours ago"; older ones read as a date.
- A row about an event that was later deleted stays as a record.
- The feed refreshes each time you come back to the window, and every 90 seconds while the window stays open.
What produces an update#
| Kind | When |
|---|---|
| Approval | An event was submitted, approved, rejected or resubmitted |
| Live change | A published event was edited, changed status or was deleted |
| Revision | A change to a live event was submitted, approved, rejected or discarded |
| Note and Mention | Somebody wrote in an event's thread, or named you in it |
| Access request | A request was approved or rejected |
| Circular | A circular reached a branch you belong to |
| Integrity | The data checks of the sports add-on found something (administrators only) |
Who receives an update is decided in one place: the event's creator, the people whose signature is currently due, the administrators of the branch the event belongs to, the participants of the thread, and, for access requests, everyone who could have decided it. You are never notified of your own action. Nobody is told twice about one note: being mentioned outranks being a participant.
A notification never reveals an event you may not see. The name of an event is frozen into the row when it is written, so a later rename or deletion does not rewrite history.
Notes and mentions on an event#
Every event has a Notes tab. It is the conversation about that event, and it stays with the event.
How to write a note#
- Open the event and switch to the Notes tab.
- Type into Add a note….
- Choose Share to make the note visible to everyone who can see the event, or Private to keep it for yourself.
- Save. A shared note appears in the thread with a Shared badge.
How to mention somebody#
- In a shared note, type @ and start typing a name. The list offers only people who can already see this event.
- Pick the person. They get an update and, if they allow mail, a mail that lands them on this thread.
Approval and rejection notes flow into the same thread, so the whole history of an event reads in one place.
Circulars#
A circular is an announcement with a subject, a message and optional attachments, sent to a whole scope of the organization at once. The circulars feature is switched on per instance by Digipart. On an instance where it is off, the button does not appear.
Sending needs the Send circulars right. Branch administrators can hold it for their own branch.
How to send a circular#
- Click Circulars in the top bar, then New circular.
- Enter a Subject and the Message. Plain text, line breaks are kept.
- Under Recipients, choose Everyone or one organization. An organization means everyone in it and everything below it.
- Tick Ask for confirmation if recipients must acknowledge the circular. It then stays in each recipient's Tasks until they confirm.
- Add files if you need them. Adding a file saves the circular as a draft first. A circular holds up to 12 files.
- Read the line Reaches {count} people under the recipients. It is the live audience count.
- Click Send… and confirm. Recipients are notified in the app, and by mail where mail is enabled.
How to see who has read it#
- Open the sent circular from the list.
- The receipts view shows every recipient: Notified and, where confirmation was asked, Confirmed with the date. It also counts how many still owe a confirmation, and how many people joined the scope after the circular went out.
- Click Send reminder to nudge everyone who has not confirmed, or Send to new members to reach people who joined the scope since. Both are available once per 24 hours per circular.
Recipients never see the receipt list. Only the sender and the administrators of the scope do.
How to confirm a circular you received#
- Open the row in Tasks under Circulars awaiting your confirmation, or click the update.
- Read it and click Confirm receipt. The confirmation keeps its first timestamp even if you click again later.
E-mail#
Mail is a side channel. The in-app feed is always written; mail goes out in addition, and each person can switch it off for themselves.
How to switch your notification mails on or off#
- Open the account menu in the top bar and choose Notifications.
- Tick or untick Email me about changes to my events. This covers approvals, rejections and changes to published events you created. Updates in the app are not affected.
Who gets which mail#
| Outcome | Mailed to |
|---|---|
| Approval chain result (approved, rejected) | The event's creator |
| Revision result | Whoever made the revision |
| Change to a live event | The event's creator |
| A mention | Each person named |
| A circular | Every recipient in the frozen audience |
| Approvers, when a request awaits them | The people who may decide it |
A plain shared note mails nobody. An intermediate signature in the chain is not an outcome and mails nobody either.
Every mail links straight to the thing it is about. A mention mail lands on the Notes tab. Every mail exists in German, English and Romanian, and each recipient gets theirs in their own language.
Rules worth knowing#
- Recipients of a circular are resolved and frozen at the moment of sending. The receipt list is the record of who was told what, and when.
- A sent circular cannot be edited or deleted. A correction is a new circular. Drafts are yours alone and can be deleted.
- People without a login who exist in the org chart are part of a circular's audience. They are people the organization decided exist, and the receipt list would understate reach without them.
- A person who leaves the scope after a circular keeps their receipt, but drops out of the pending count.
- The scope of a circular is checked again at the moment of sending. Someone who moved to another organization cannot send into their old branch.
- Every mail attempt, whether sent, held back or failed, is written to a log that cannot be purged from inside the app.
- A failed notification never fails the action that caused it. If a mail cannot go out, the approval still happened.
Common questions#
Why do I not see a task another person sees? Tasks follow authority. You see an event in Awaiting approval only when your signature is the one that is due right now. Earlier and later levels of the chain see it when their turn comes.
How do I know whether somebody has read my circular? Open the sent circular. Without Ask for confirmation you only see who was notified. With it, you see who confirmed and who has not.
Can I reply to a circular? No. Circulars are one-way. Use the notes on an event, or mail the sender.
Why did a mention not send a mail? Either the person switched off their notification mails, or mail is not enabled on your instance. The in-app update was written in both cases.
Why does an update still name an event that no longer exists? The name is frozen into the update when it is written, so the record stays readable after the event is deleted.
Can I turn off the in-app updates? No. The feed is the record. You can mark everything read with one click, and you can switch off the mails.
Somebody wrote a private note. Can an administrator read it? No. A private note is visible to its author only.
Publishing: website, calendar feeds and the public API#
What it is#
An event that is published in Rundplan can reach the outside world through several doors at once, all fed from the same plan: your website, calendar apps such as Google Calendar, Apple Calendar and Outlook, downloads, a printable list, the public mobile app, and a read-only API your web agency can build on.
All of these read the same published copy of the event. Nothing internal ever leaves: contact persons of venues, internal notes, the protocol, the approval chain and anything under an event type marked as not public stay inside.
This section is for the manager who decides what goes public, and, in its last part, for the web agency that connects the website.
The public calendar switch#
Everything public starts with one switch. While it is off, every public address answers as if it did not exist, so nobody can even tell the feature is there.
How to publish your calendar to the world#
- Open Settings → Calendars. You need the right to manage configuration.
- Find Public calendar feed and switch on Publish this calendar.
- Three addresses appear with copy buttons: Calendar feed (ICS), Data feed (JSON) and Schedule feed (for scoring systems).
- Click Open the subscribe page to see the page your public will use.
What goes out: published events, plus completed events from the last twelve months. Requested, approved-but-unpublished, private and rejected events never appear. A pending revision never appears either; the public copy is the published copy.
How to keep an event type off the public surface#
- Open Settings → Event types.
- Open the type and set Can be public to no.
- Events of this type never reach the website, the feeds or the app, even when they are published. Internal visibility is unaffected. This is how a league or an amateur series stays on the internal calendar only.
Tip: The other way round is a trap. If a type says no, publishing an event of that type does nothing for the public. Check the type first when a published event is missing from the app.
Calendar feeds#
A calendar feed is an address that Google Calendar, Apple Calendar and Outlook read on their own schedule. Once subscribed, the calendar app keeps itself up to date.
The public feed#
The public feed is one address for the whole federation calendar. Anybody can subscribe, no account needed. It is the address your website links to and the address behind the subscribe page.
You can narrow it. Add ?org= with an organization id to get that organization and everything below it, ?type= for an event type, or ?tier= for a category. All three can be combined and repeated. ?season= with a year serves that whole season instead of the rolling window, however old it is. The ids are the ones shown in Settings.
The subscribe page#
The subscribe page is a public page with one button each for Apple Calendar, Google Calendar and Outlook, plus Copy link for any other app that reads calendar files. It needs no login. Put a link or a QR code to it on your website, on posters, in a circular. When the public calendar is switched off, the page says so plainly.
Personal feeds#
A personal feed turns your current filtered view into a feed of its own, for your own calendar app.
- Open Calendars in the top bar and switch to the Export tab.
- Under Sync to your calendar, click Google Calendar, Apple Calendar or Outlook. Rundplan creates the feed and hands the calendar app the right link. Or copy the Feed URL by hand.
- Your feeds are listed under My feeds with the date created and when a calendar app last fetched them.
- Click Revoke to kill a feed. The address stops working at once.
A personal feed replays your saved filter against live data, under your current visibility. When your rights change, the feed follows. Each person can hold up to 20 feeds.
Tip: Calendar apps refresh on their own schedule. Google can take up to a day. This is the calendar app's behaviour, not Rundplan's.
Downloads#
How to download the current view#
- Set the filters you want. The download follows the current view.
- Open Calendars → Export.
- Choose Download as .ics for a calendar file, or Download as CSV for a spreadsheet.
The calendar file writes all-day events as all-day and timed events at their local time, with the venue as location and the event type as category. The spreadsheet uses the same columns the import understands, so a file can travel out and back in.
PDF export is listed in the dialog marked Coming soon. It is not built yet.
A printable season list#
The List view is the printable one. Set the filters, switch to List, and print from the browser. The list follows the same filters as every other view.
What never leaves the house#
- Events under a type with Can be public set to no.
- Events in any status except published and completed.
- The pending revision of a live event. The public sees the last approved copy.
- Notes, mentions, the protocol, the approval chain, attachments, poster drafts, who created or edited an event and when.
- The venue's capacity, its notes and its contact person.
- Custom fields marked Internal, and any custom field of the types Email and Phone, whatever their visibility.
- Retired custom fields.
What does go out on a public event: name, subtitle, dates and times, whether it is still standing or completed, type, category, the organizing organization with its logo, venue with town and street address, the event's contact person with name, e-mail and phone as printed on the poster, description, registration info, link, window and entry fee, video link, season, the external event id, and the values of custom fields marked Public.
The public API, for your web agency#
This part is for the people who build your website. It describes what Rundplan offers to a website or an external system. It is a read-only surface. There is no write API today.
Access#
There is no key and no login. The addresses work as soon as the public calendar is switched on. Every address is rate-limited per caller, so a website should cache what it reads rather than call on every page view.
Responses carry standard cache headers and an entity tag. A caller that sends the tag back receives a "nothing changed" answer instead of the whole calendar when nothing changed. Five minutes is the suggested re-check interval.
The three addresses#
| Address | Shape | For |
|---|---|---|
| Calendar feed (ICS) | iCalendar file | Calendar apps and anything that subscribes to calendar files |
| Data feed (JSON) | JSON, one object per event | A website, the public mobile app |
| Schedule feed | A deliberately tiny, unchanging JSON shape | Scoring systems that need to recognize competitions |
All three accept the same narrowing: ?org=, ?type=, ?tier=, ?season=. The exact addresses are shown in Settings → Calendars under Public calendar feed.
What the data feed carries#
Every event has a stable public id. It never changes for the life of the event and is never reused. A website plugin or a scoring system stores it and refers back to it. The federation's own event number, when one is used, rides beside it as the external event id.
Each event object carries: the id, the external id, name, subtitle, start and end date as calendar dates, start and end time as local wall-clock times, status (published or completed), kind (event or envelope), the parent event for days of a festival, the festival's name, the type with its colour, the category with its colour, the organizing organization with its logo address, the venue with town and street address, the contact person, description, registration fields, video link, season and the public custom fields keyed by their technical key.
A festival is an envelope: a frame grouping child events. It carries no venue or classification. A consumer that wants only real events filters on kind.
Absent means absent: a field the event does not have is missing from the object, never null and never an empty string.
The contract is additive. New keys may appear. Existing keys never change meaning.
The technical key of a field#
Every built-in field has a fixed key in the outward API. Settings → Fields lists them under API key. Custom fields travel under the key their administrator gave them. Keys are permanent; labels can change without breaking a website.
Logos and images#
Organization logos, the federation's own logo and player photos are served by public addresses named in the feed. Nothing else is served publicly: no attachments, no poster images, no circular files, no venue photos.
The schedule feed for scoring systems#
The schedule feed is the same dataset seen through a smaller lens: id, external id, name, dates, type, category and season. Nothing else, on purpose, so the shape never has to change. An administrator can narrow it to the categories and types that get scored, so a scoring system is not handed the whole calendar. Festival frames are left out; their child events are in the list on their own.
A scoring system that joins mid-season asks for the whole season with ?season= and gets the competitions already played along with those to come.
Seasons#
The season on an event is the effective season: the value a person set on the event, otherwise the season derived from the date and the federation's season settings. See the configuration section for how seasons are defined.
Rules worth knowing#
- The twelve-month window for completed events is counted from today and is not tied to the season settings. Moving a season boundary never changes what the world sees.
- A completed event stays public on purpose. A calendar that erases its own past breaks website archives and scoring systems.
- Deleting a published event removes it from every public door at once. Rundplan asks for a note first and notifies the officials.
- Editing a published event does not change the public copy until the revision is approved. See the approval chain section.
- The public addresses answer exactly like a path that does not exist while the switch is off.
Common questions#
A published event is not in the app. Why? Check three things: the public calendar switch in Settings → Calendars, the event type's Can be public setting, and the event's status. Only published and completed events go out.
How do I get the calendar onto our website? Give your web agency the Data feed (JSON) address from Settings → Calendars. For a quick start without development, link to the subscribe page and let visitors add the calendar to their own calendar app.
Can I publish only one region's events? Yes. Add ?org= with the region's id to the feed address. It covers the region and everything below it.
Can I get a feed of only category 1 competitions? Yes. Add ?tier= with the category's id.
Do I need a separate feed per language? No. The feed carries the event's own text as entered. The labels of types and categories are the words your federation typed.
How fast does a change reach the website? Within the website's own re-check interval. Rundplan answers fresh data at most five minutes after a change; a website that caches longer shows it later.
Can a scoring system write results back? Not through this surface. It is read-only. Results enter Rundplan through the sports add-on's sync; see that section.
We renamed a custom field. Does the website break? No. The website reads the key, not the label. Keys are permanent.
External calendars and overlays#
What it is#
An overlay is a read-only external calendar laid over your own plan: public holidays, another federation's fixtures, a partner's programme, your own personal calendar. Its entries show as coloured bands at the bottom of the day cells, deliberately styled so they never read as one of your events. Each overlay gets a matching conflict rule, so a clash with a public holiday shows in the calendar in that calendar's own colour.
There are two scopes. Global calendars are curated centrally by an administrator and offered to everyone. My calendars are your own; only you see them.
The Calendars hub#
Calendars in the top bar opens one dialog with three tabs:
| Tab | What it does |
|---|---|
| Show | Switch calendars on or off in your own view, global ones and yours |
| Add | Add a calendar to your list: from the catalogue, or by subscribing to a feed address |
| Export | Download the current view or subscribe to it in your own calendar app (see the publishing section) |
Switching a global calendar off affects only your own view. The on/off state is part of a saved View, so a view can carry "with public holidays" as part of its definition.
How to add a calendar from the catalogue#
- Open Calendars → Add.
- Choose Catalogue. The bundled calendars are listed, for example national public holidays of the current year and the international fixtures of the sport.
- Click one. It lands in your list under Show, switched on.
Adding a personal calendar needs the Add personal calendars right. Administrators can add global calendars for everyone in Settings → Calendars.
How to subscribe to a calendar feed#
Any calendar that publishes an address for calendar files can be laid over your plan.
- Open Calendars → Add and choose Subscribe.
- Paste the Feed URL. Only secure
https://addresses are accepted. - Rundplan's server fetches the feed now and re-checks it every six hours. Recurring entries are skipped, and a very long feed is cut at 500 entries. Both are said on screen.
- Give the calendar a name, an icon and a band colour.
The entries are owned by the sync: you cannot edit them, and the next fetch replaces them. A failed fetch leaves the last good copy in place.
How to manage global calendars as an administrator#
- Open Settings → Calendars.
- The table lists every global calendar with its icon, type, number of entries, colour, the Default on switch and the result of the last sync in plain words: OK, could not reach the feed, feed too large, not a valid calendar, invalid feed URL, the feed timed out.
- Default on decides what new users see without switching anything on themselves.
- Refresh now fetches a subscribed calendar again.
- Load default calendars adds the bundled set in one click.
Deleting a global calendar tells you how many people currently have it switched on before you confirm.
Icons and colours#
Each overlay carries a name, an icon and a band colour. The icon can be one of the built-in icons, an emoji, an uploaded logo, or the icon of a website: enter the address and Rundplan's server fetches the site's icon once and stores it. Your browser never contacts that site.
Rules worth knowing#
- Overlays are read-only. They never create events, never block a save and never change your data. They show, and they flag clashes.
- Every overlay gets its own conflict rule. The rule appears in Settings → Conflict rules and can be switched off or recoloured like any other rule. When the calendar is deleted, its rule can be deleted too.
- Fetching is guarded: secure addresses only, no addresses inside private networks, a size cap and a time limit. A feed that breaks the rules is reported, not loaded.
- The Create and Import modes on the Add tab are visible but not yet wired. The catalogue and the subscription both work.
- The day lens (the magnifier in the footer, or holding Alt over a day) shows the day's overlay bands together with the events.
Common questions#
Can other people see my personal calendar? No. A personal calendar is visible to you only, on this instance. An administrator sees that global calendars exist and how many people use them, never your personal ones.
Can I overlay my Google Calendar? Yes, if it publishes a secret calendar-file address. Copy that address from your Google Calendar settings and subscribe to it under Add → Subscribe. Treat the address as private; anyone who has it can read that calendar.
Why does a subscribed calendar show old entries? The server re-checks every six hours. Click Refresh now in Settings → Calendars for a global calendar to fetch it again at once. A refresh right after another one is refused for a moment.
A holiday overlaps my event, but the day shows no conflict. Check Settings → Conflict rules. The overlay's rule may be switched off, or a rule higher in the list decides the day's colour. The first matching enabled rule sets the colour.
Can an overlay entry become a real event? No. If you want it on your plan, create the event.
Configuration, presets and seasons#
What it is#
Settings is where an administrator shapes the instance: what the organization is called and how it looks, which event types and categories exist, which extra fields events carry, how the organization is layered, who signs what, when a season starts and ends, and which features are switched on. Settings need the Manage configuration right or an administrator account.
The organization's own words are data, not translation. Level names, the word for the category axis, category notes and conflict rule labels are typed by you, in your language, and shown as typed.
Each card in Settings saves on its own. Saving one card never wipes another.
General#
Display#
- Open Settings → General.
- Under Display set the Name and the Short name. The short name appears in the top bar and in file names.
- Upload Logo (light theme) and Logo (dark theme).
- Pick a Background color and an Accent color. They tint the filter bar, the settings canvas and the sign-in screens, in light mode. Use default takes them back.
- Set the Currency: a three-letter code such as EUR or RON, an optional Symbol and its Symbol position. The preview line shows how an amount will read. Leave it empty and fees show as bare numbers.
- Set the Category label: your own word for the second classification axis under an event type, for example "Tier", "Wertung" or "Categorie". It appears in the event form, the filter bar, the list and exports.
- Set the Public app title if the public app's header should say something other than the organization's name.
Amounts always render in the federation's format, not in the reader's browser locale, so a poster reads the same everywhere. A fee of zero prints as a word, "free", never as "0 €".
Language#
Set the Default language for everyone who has not chosen their own. Below the save line, My language changes your own display language at once and is remembered on this device. The pre-login pages follow the default language.
Season#
A season in Rundplan ends with an event, typically the final. Everything after that event belongs to the next season.
- Under Season, switch on This organization has seasons. With it off, the instance has no season field and no season toggle anywhere.
- For each season row, pick the closing event. Rundplan suggests the event whose name looks like a final, marked Suggested. The rows cover the seasons that have events, plus the previous, current and next one.
- Set the fallback: If no closing event is set, a new season starts on a month and a day. This rule applies to seasons without a closing event.
- Save.
A season is named by the year it ends in. When a season has no closing event, the card says so and the fallback day is in use. When a closing event was deleted, the card shows a red line and asks you to pick another.
Removing a closing event asks for confirmation and states the consequence: it changes what the website and the mobile app show, and how championships are calculated.
The event's own Season field stays an override. Leave it empty and the season is derived from the date; set it and it wins.
Structure#
Organizational levels is the ladder of your organization, top to bottom: for example Federation → Regional association → Club, or Town hall → Institution → Organizer.
- Add, rename, insert above or below, and reorder levels. Inserting only renumbers the levels below and never moves an organization to a different parent.
- Deleting a level is refused while organizations sit on it; the count is shown.
- Mark the Region filter level: its organizations fill the region filter, the saved views and the region field on events.
- Mark the Club level: its club-kind organizations are the clubs registry of the sports add-on. Usually the bottom level.
Approval chain lists the levels that must sign an event, nearest level first. An event runs only through the levels above its own organization, so naming the bottom level is harmless. An empty chain means one signature from anyone above the owner.
Changes to published events#
- What needs approval: Public fields only lets internal notes and identifiers save straight away; Every field means nothing on a live event changes without a signature.
- Light approval for wording changes: on, a change to the wording takes one signature from the level above; off, every change goes through the full chain.
- Require a current poster to publish: events can only be published with a current poster. Approvers may override with a logged reason.
Maintenance#
Restore pre-v2 config appears only when a configuration backup from an upgrade exists.
Event types and categories#
- Open Settings → Event types. The whole taxonomy sits on one screen: types, and under each type its categories.
- Per type: Label, Short label, Color, Registration (whether events of this type take registrations), Can be public, Just for fun (amateur) and an optional Badge image.
- Per category: Label, Short label, Color (empty means the type's colour), the type it belongs to, a free-text Category note and an optional Badge.
- Categories not assigned to any type are listed in an amber Unassigned categories group. Assign them so the event form can offer the right ones.
Can be public decides whether events of this type may ever reach the website, the feeds and the app. Just for fun (amateur) marks types that generate no national points; the public app's mug and cup quick filters use it.
Parent events: one colour that every festival band wears, in the calendar and in the public app.
Deleting a type that still has categories, or that events still use, is refused with the count. Move the events first.
Fields#
Built-in fields#
Settings → Fields lists every field an event carries by design with its API key, the name the outward API uses. A key can be reset to its default.
Custom fields#
Custom fields are your own additions to every event. An instance holds up to 40.
- Click Add field.
- Enter the Label per language. The Key fills itself from the label until you take it over. Keys are permanent; they are the API, import and poster name.
- Choose the Type: text, long text, number, money, date, time, URL, email, phone, yes/no or select. The type cannot be changed later; retire the field and create a new one instead.
- Set Applies to: nothing ticked means every event and every frame; or tick specific types, or Frame (festival).
- Tick Required to enforce it where the field applies. Tick Offer as filter to show it as a filter pill on the calendar; best for select and yes/no fields.
- Set Visibility: Public fields of a published event change only through an approved revision and appear on the public surface; Internal fields save straight away and never leave.
- For a select field, add the Options. Option ids are frozen once stored. Retire an option that events still hold; removing it is refused.
- Optionally set a Group heading, for example "Logistics".
Use Move up and Move down to set the form order. It is also the stacking order on posters. Retire hides a field from forms but keeps its data; Reactivate brings it back.
Custom fields appear on the event's Custom tab, in the spreadsheet import and export under their key, in the filter bar, and as bindable values on posters.
Venues, locations, templates#
- Venues: name, address, town, capacity, contact person, notes, logo. A venue can also be created straight from the event form with New venue….
- Locations: the towns, with region and sort order.
- Templates: reusable event skeletons, with a count of how often each is used. Pick one under Use template when creating an event.
Conflict rules#
The calendar flags date clashes by rules you own.
- Open Settings → Conflict rules.
- Drag rules to reorder. The order is the priority: the first matching enabled rule sets the day's colour.
- Switch each rule on or off, pick its colour and edit its label.
Five kinds of rule exist: any date overlap, overlap in the same region, overlap in different regions, same venue, and a minimum gap in days within the same region. Every external calendar adds a rule of its own. Seeded rules can only be switched off; only orphaned overlay rules can be deleted.
Registration defaults#
Under Settings → Registration: the Default entry fee, how many days before an event registration opens and closes, and the default participant cap, where 0 means unlimited. These prefill new events. The whole registration feature can be switched off per instance for organizations that take no entries.
Mentions, placement rules and the party pool#
Sponsors, partners and patrons are parties in one pool per instance. Where a party is placed decides where it appears: placed at the federation it rides on every poster, placed at an organization it belongs to that branch, placed on an event it appears on that event alone. Placement rules credit a party on every event that matches a type or a custom field value, and the organizer cannot remove that credit. The organizations and people section covers the details.
Features#
Settings → Features lists what this instance may use: e-mail notifications, circulars, the Poster Studio, the manual text override in the Studio, registration, the sport registry and the community tier. These are licensing switches set by Digipart, not federation setup. They are read on every request, so a change applies at once.
Presets#
A preset is a whole configuration in one file: event types and categories, custom fields, organization levels, the region and club markers, the approval chain, conflict rules, registration defaults, currency, season switch and fallback day, the event id pattern, the API key map and feature overrides. It carries no identity, no logos, no colours and no data.
How to save your configuration as a preset#
- Open Settings → Presets.
- Under Save this instance as a preset, click Download preset file.
How to start from a ready-made preset#
Three presets ship, each described in every language: a darts federation with two levels, a darts federation with three levels, and a municipality with town hall, institutions and organizers, no season, registration off and five ready-made custom fields such as expected audience and permit status.
- Open Settings → Presets.
- Pick a preset under Ready-made presets or choose a file under Load from a file.
- Load into this instance. Loading is an operator action; ask Digipart. It only works while the instance holds no events, so a preset can never overwrite live data.
A file that claims to carry an instance's identity, or that comes from a newer version of Rundplan, is refused.
Rules worth knowing#
- Removing an event type, a category, a level, a custom field key or a select option that is still in use is refused with the offending row named. Nothing is cascaded silently.
- An already-broken reference never blocks a save. A rename cannot be held hostage by old data.
- Reordering levels so that a child would outrank its parent is refused.
- A hidden required field never blocks a save. Applicability is a display rule, never a storage rule: a value under a field that stopped applying is kept.
- The season closers are not part of a preset. They name events, and a preset carries no data.
Common questions#
How do I rename "Category" to our own word? Settings → General → Display → Category label. The word appears everywhere the axis is named.
We have four levels, the preset has three. What now? Insert a level in Structure. Inserting never moves an organization. Then place the new organizations on it from the Organization page.
Can two organizations sit on the same rung with different names? Levels are a strict ladder of depths. Different kinds of organization, clubs, external organizers, establishments, can sit on the same level as siblings. See the organizations section.
Where do I switch on registrations? It is a feature switch set by Digipart. Once on, Settings → Registration holds the defaults and every event gets a Registration tab.
Why is a field I retired still on old events? Retiring hides the field from forms and keeps its data. That is the point: nothing is lost, and Reactivate brings it back.
Our season starts in September. Where do I set that? Under Season, set the fallback day to 1 September, and pick a closing event for each season once the final exists. The closing event wins over the fallback.
Why can I not delete the "same region" conflict rule? Seeded rules can only be switched off. Switch it off and it stops colouring days.
Import and export#
What it is#
Rundplan takes a season plan in from a spreadsheet and hands any view back out as a file. The import is a guided wizard with a dry run before anything lands. The export follows the filters of the view you are looking at.
Importing events from a spreadsheet#
The import reads a CSV file, the plain-text spreadsheet format every spreadsheet program can save. It needs an administrator or the right to manage configuration.
How to import#
- Open Settings → Calendars and find Import events.
- Read the guide on screen. It names how event types, categories, regions, venues and organizers are matched, which statuses you may import into, the keys of this instance's custom fields, and the date and time formats.
- Click Download template. The template is generated for this instance: the built-in columns minus the ones this instance does not use, plus every live custom field under its key, with a typed example row.
- Fill the template in your spreadsheet program and save it as CSV. Commas, semicolons or tabs between the columns all work.
- Under Import as, choose the status the events get. You can only choose statuses you may create into.
- Click Choose CSV file. Rundplan runs a full check on the server at once. Nothing lands yet.
- Read the review: file-level notices, the counts line such as "18 of 23 rows will be imported · 3 skipped · 2 with errors", and one row per line with its title, date, result and details.
- Fix what needs fixing in the spreadsheet and choose the file again, or click Import {count} events.
The whole import is one transaction. Either every importable row lands, or nothing does.
What you can import#
Start date, end date or a combined date range, title, subtitle, event type, category, venue, organizer, region, town, external event id, description, start time, end time, video link, registration info, registration link, season, status, and every custom field under its key.
Headers are accepted in English, German and Romanian, plus your own words for the renamable axes, for example your category label and the name of your region level. A file exported from Rundplan imports back without changes.
How rows are matched#
- Event type, category, region, venue and organizer are matched by name against this instance's settings. A name that matches nothing is a warning and the cell is left blank, never a refusal.
- The organizer column matches organizations by name, short name or short code.
- A status in the file is honoured against your own rights. A status you may not set becomes a warning and falls back to the batch status.
- Columns this instance cannot use, for example season on an instance without seasons, are dropped with a notice.
- Unknown columns are reported once for the whole file.
- Duplicate external event ids, inside the file or against what is already stored, are skipped and named.
Limits#
A file holds at most 500 rows and one megabyte. Larger plans go in as several files.
What the import cannot do#
- It cannot update existing events. A row with an external id that already exists is skipped, not merged.
- It cannot create venues, organizations or event types. Create them first, then import.
- It cannot attach posters or files.
- Imported events do not pick up a town from their venue yet; fill the town column.
Every imported event gets an Imported from CSV entry in its protocol. On an instance where a current poster is required to publish, imported events that arrived public without a poster are marked so they can be found later.
Exporting#
The current view as a spreadsheet#
- Set the filters. The export follows the current view.
- Open Calendars in the top bar → Export.
- Click Download as CSV.
The file mirrors the import columns: localized headers, custom fields under their key, the date range split into start and end, canonical status ids.
The current view as a calendar file#
Same place, Download as .ics. See the publishing section for the calendar feeds, which keep a calendar app up to date instead of a one-off file.
People who use the public app#
Administrators can export the list of people who set reminders or joined a wishlist: Organization page → People view → Export CSV. It holds e-mail, name, town, whether the address is verified, whether the person opted out, their wishes and when they were last seen.
Your configuration#
Settings → Presets → Download preset file exports the whole configuration without data. See the configuration section.
Posters#
The Poster Studio exports print-ready and screen-sized images per event, and a layout file another instance can open. See the Poster Studio section.
A complete copy of your instance#
A full export of everything an instance holds, events, organizations, people, files and settings in a machine-readable form, is available on request from Digipart. It is part of the data processing agreement: your data is yours and leaves with you.
Rules worth knowing#
- The review shows the result of every row before you commit. Read the warnings; a warning means a cell was left blank.
- PDF export is shown in the export dialog marked Coming soon. It is not built.
- A CSV saved with semicolons in a German or Romanian spreadsheet program imports correctly; the delimiter is detected. If the header line arrives as a single column, the file says so and names what it tried.
Common questions#
My spreadsheet has more columns than the template. What happens? Unknown columns are ignored and reported once as a notice. Nothing else changes.
Can I import into "Published" directly? Only if you hold the right to publish. Otherwise the batch status falls back to the highest status you may create into. On an instance that requires a current poster to publish, the events land published and are marked as arrived without a poster.
Why were three rows skipped? Open the review and read the details column. The usual reasons: a duplicate external id, a missing title, or an invalid date.
Can I re-import a corrected file? Yes, but rows whose external id already exists are skipped, not updated. Delete the wrong events first, or correct them in the app.
Where is the export of a single organization's events? Filter the calendar by organizer, then download. Every export follows the view.
Can I export the people who registered interest in one event? Open the event; the People view on the Organization page shows per-event counts, and the export covers all people. A per-event export is not built.
Poster Studio#
What it is#
The Poster Studio makes a poster for one event out of that event's own data. Title, date, venue, category, organizer, sponsors and partners come from the event and land in their slots by rules set once. Around that, you have a free hand: photos, shapes, bands, text, layers. The result exports print-ready and in screen sizes, and the poster is approved together with the event, so the artwork on the website never disagrees with the calendar.
The Studio is licensed per instance. On an instance without it, the editor does not exist and the event's poster controls are not shown. Uploading a finished poster image to an event works everywhere, with or without the Studio.
One event has one poster. The event is the address; there is no poster library to manage.
Getting in#
There are three ways into the Studio. All of them need the right to edit the event.
- Click Poster Studio in the top bar. A searchable picker lists the events you may edit, upcoming first.
- Open the event and click Generate poster or Open in Poster Studio. The button sits on every tab of the event, and saves your pending edits first.
- Open the event's Poster tab.
Leaving the Studio with Exit returns you to the calendar with that event open on its Poster tab.
The screen#
The canvas in the middle is an A4 portrait poster at 200 dots per inch, fitted to your screen. The left rail holds the event, the date format, the state of the poster, export and the file actions. The right panel lists the Layers, front to back. Click any part of the poster to edit it.
Templates and the federation's design#
A new poster starts from a template, or from your federation's own default design when one is set up for your instance. Out of the box a poster shows a coloured background, a background photo, header and footer bands, the title, the date and the venue. Every other slot exists but is switched off, ready to be included.
A new poster forks the template. Later changes to the template never reach into a poster somebody already made. When you open a poster made on an older template version, the strips it never had are listed greyed with an Include button. Nothing changes until you press it.
A new poster also gets one text slot for every custom field your instance defines that the template does not already cover.
Layers#
Eight kinds of layer exist: Shape, Band, Text, Logo row, Image, QR code, Official badge and Organizer row.
How to work the layer panel#
- The topmost row is the front of the poster. Drag to reorder.
- The eye shows or hides a layer while you design. Include decides whether the field is on the poster at all. These are two different things on purpose.
- Delete this layer removes a layer you added yourself. Template layers can be excluded, not deleted.
- Reset to template default on any editor puts that layer back.
- Shift-click on the canvas or in the panel to select several layers. The selection moves as one, with the mouse or the arrow keys.
A slot bound to a field the event leaves empty is not greyed. It is simply not there: an empty field renders nothing, no dash, no blank box, no "TBA".
Placing things#
- Drag layers on the canvas, or use Left, Top, Width and Height under Position & size. The poster is 1654 by 2339 units.
- Grid in three densities: Large grid — 20 × 28, Medium grid — 40 × 56, Fine grid — 80 × 112. Each one subdivides the last, so changing density never nudges what is already aligned. One switch turns on the overlay, the rulers, drag snapping and the arrow-key step together. Shortcut G.
- Guide color changes the grid and the selection outline. Guides are never exported.
- Arrow keys nudge by one unit, or one grid line while the grid is on. Shift multiplies the step.
- Undo and Redo hold 50 steps for the poster on screen: Ctrl+Z, Ctrl+Y or Ctrl+Shift+Z.
Text#
- Pick the Font from 24 faces that ship with the Studio, all with the characters of every language your federation writes in, all embedded into the export so the file matches the preview.
- Weight, Size, Color, Alignment, Vertical alignment, ALL CAPS, Letter spacing, Line height.
- Text wraps and shrinks to its frame down to a floor. It never overflows.
- Text shadow and Text outline, each with its own colour. The outline is drawn behind the letters, so widening never thins them.
- A layer that follows the event shows Automatic and prints what the event says. Type over it and it becomes Edited by hand; Use event data again puts it back. Converting a layer to manual text for good needs the manual override licence.
Colour, shapes and bands#
- Fill: Solid, Linear gradient or Radial gradient. Switching kinds carries your colours across. Drag a swatch on the gradient bar to move it, click it to recolour, click the bar to add a colour, up to five.
- Every colour is either Event color, which follows the event type's colour with a Darker / lighter shift, or Fixed color. Posters that use event colours come out on brand for every event without a decision.
- Six shapes: Rectangle with Corner rounding, Circle, Triangle, Pebble, Bean, Petal. New shapes arrive in the event's colour, with Opacity and Blending named by effect: Darken what's under it, Lighten what's under it, Boost the contrast, Tint it gently.
- Bands glue to the Top edge or Bottom edge, full width, with a Height and a Fade from hard edge to a fade across the whole band.
- Text, image, logo-row, organizer-row and badge layers can carry a Panel behind this layer, a painted box background.
Images and backgrounds#
- Ready-made backgrounds ship with the Studio, free to use.
- Or use your own photo: drop a file, tick I have the rights to use this image, and it is uploaded. Up to 20 MB; PNG, WebP and SVG keep their format so transparency survives.
- Fit: Fill frame or Fit inside, with Focus X and Focus Y.
- Photo treatment: None, Black & white, or Tint in one colour. Leave the tint on the event colour and a club's phone snapshot comes out on brand. Strength controls how much. There is deliberately no brightness, contrast or crop.
- Trying a ready-made background does not lose your upload. Use this photo puts it back.
Logos, credits, badges and the QR code#
- A Logo row is bound to a mention role, Organizers, Sponsors, Partners, or Chosen by hand. A bound row lists its credits in the order the poster draws them, and you can drag to rearrange. A credit without artwork is drawn as a name chip, so a poster is never silently short a credit.
- Logos are sized so each one shows about the same amount of ink; a wide wordmark and a round crest read as the same weight. Logo height sets the row; Size adjustment nudges one logo between 75 and 125 percent.
- Adding a logo by hand to a bound row stops it from following the event. Follow the event again puts it back.
- The Organizer row is everyone who runs the event, in the federation's order, which cannot be changed here. Optional role captions per entry.
- An Official badge places the type badge, the category badge, the venue logo or the organizer logo exactly as issued. No recolouring, no cropping. A badge with no artwork is not offered.
- The QR code links to The entry form or to A web address I type, in Bullseye or Squares style, with its own colours.
Dates#
The Default date format in the rail is four switches: Day name off, full or short; Day; Month off, number, full or short; Year off, two or four digits. The sample line shows the result on a date range. Any date layer can turn Same as poster off and set its own four switches. Month and day names follow the federation's language.
Saving, drafts and approval#
The Studio always works on a draft, a private working copy the public never sees. It saves the draft about a second and a half after your last change, and says so: Draft saved · 14:32.
- On an unpublished event, Save to this event writes the poster straight through.
- On a published event, Save poster for approval marks the draft ready and opens a light revision. The artwork goes live in the same moment as the change it belongs to. Save and approve does both for anyone who could sign it anyway.
- Update from event re-reads every field from the event. Opening a poster whose event moved refreshes only the fields that changed and says which: Changed: Date, Venue.
- The state chip in the rail reads Event has changed, Draft of a live event, Draft ready for approval or Saved event details.
- Leaving with an unfinished draft asks: Keep as draft, Mark ready for approval, Save to event, or cancel.
- New poster starts this event's poster over from the template or the federation design.
Stale posters#
A poster goes stale when a field it prints moves: an event edit, an approved revision, a change to a credit, a placement rule, the currency, a party being placed or deactivated. Status changes do not make a poster stale.
A stale poster shows Poster out of date on the event, naming the fields that moved. To clear it, open the Studio and save, or, for an uploaded poster image, click I checked this poster on the event's Poster tab. That click is written to the protocol.
When your instance requires a current poster to publish, a missing or stale poster blocks publishing and the approval of a revision. The dialog names what is missing or which fields moved, offers Open Studio, and lets an approver Publish anyway with a written reason that lands in the protocol and reaches the administrators.
Export and sharing a layout#
- Export as PNG or JPG in three sizes: full size at 1654 by 2339, web at 800 pixels tall, thumbnail at 400 pixels tall. The file is named after the event.
- Everything renders in your browser. Images are inlined and every font used is embedded, so the file matches the preview. The grid, rulers and selection outlines are never exported.
- Keep a copy downloads the poster's layout as a small file. Another person, another instance or another federation can open it in their own Studio and get the same design. Files from a newer version are refused rather than half-read.
- Known limit, stated in the app: a photo you uploaded lives in the browser you uploaded it from. A shared layout shows a placeholder there on another machine. Ready-made backgrounds always resolve.
Uploaded posters without the Studio#
An event's Poster tab takes a finished poster image on every instance. An uploaded image goes stale whenever anything public about the event changes, and I checked this poster clears the warning and is recorded. Uploading a new image is as good as confirming it.
Rules worth knowing#
- The Studio never writes back to the event. Status, approval history, notes and ownership are not bindable.
- Bindings match on the field's key, never on its label. Renaming a field or a category never moves or loses a layer.
- The entry fee prints with the federation's currency, and a fee of zero prints as "free".
- Poster storage per instance is metered: a warning at 512 MB, a refusal at 1 GB. An administrator frees room by removing old posters.
- Uploaded SVG files are cleaned of scripts and remote references, and refused if they would need to load pictures from the internet.
- Keyboard: Ctrl+Z undo, Ctrl+Y redo, G grid, arrow keys to nudge, Shift+click to multi-select, Escape to cancel a drag or close a popover. The font list and the layer list can be walked with the keyboard.
Common questions#
The poster shows the old date. What do I do? Open the Studio. The changed fields are refreshed on opening and named in the rail. Save, and the poster is current again.
Can I make one poster for the whole festival? The festival frame can carry a poster of its own, and each day's event has its own. A day's poster can print the festival's name and dates from the Festival name and Festival dates slots.
Where do the sponsor logos come from? From the event's Mentions tab, in the role the logo row is bound to. Add or remove credits there; switch the layer on in the Studio.
Why is a slot missing from the poster? The event has nothing in that field. Fill the field on the event, or leave the slot away. Empty fields never render.
Can a designer type their own words over event data? With the manual override licence, Convert to manual text detaches a layer for good. Without it, typing over a bound layer switches it to Edited by hand, and Use event data again restores the binding.
Does the print shop get a PDF? No. The full-size PNG or JPG is 1654 by 2339 pixels, A4 at 200 dots per inch, which print shops accept for posters. PDF export is not built.
The exported file looks slightly different from the preview. Only blending can cause that, and the Studio warns beside Export when the poster uses it. Check the exported file.
The mobile app for the public#
What it is#
The public app is your organization's own mobile app, with your name and your logo, ready the day the public calendar is switched on. It runs in the phone's browser and installs on the home screen of Android and iPhone. There is nothing to install in the office and nothing to publish in an app store.
The app shows your published events in a searchable list, lets anybody set a reminder or say they want to take part, confirmed by one mail, and sends push notifications to those who ask for them. On a sports instance it also carries the rankings, a card per player and a personal player page. The people who use the app are called persons; they are the public, not staff, and they never get a staff account.
The app lives at the address of your instance, under /app. The federation's staff sign-in is a separate page.
Installing on a phone#
- Open the app's address in the phone's browser.
- The app offers Add to home screen for the full app with an Install button, or the browser's own way: on iPhone, in Safari, tap Share, then "Add to Home Screen"; on Android, choose "Install app" in the browser menu.
- The icon on the home screen carries your organization's name and colours.
Installing matters for push on iPhone: iPhone delivers alerts only to installed apps.
The event list#
The list opens on Upcoming events, sorted by date, with a Past tab for what already happened. Each card shows the date, the name, the venue with town, the organizer's logo and the category in its colour. Today's events are marked Today, and the next event counts down the days.
- Search by name, town, organizer, type or category. Suggestions appear as chips while typing, and active filters stay visible as chips.
- The season pill switches between seasons on an instance with seasons, or years on one without.
- The mug and cup buttons after the search hide amateur events or show only them, when the federation has marked some types as amateur. The buttons appear only when such types exist.
- The bell and the target buttons show only events with my reminder, or only my wishlist events.
- A festival's days are bracketed with Starts: and Ends: bars.
Tap a card and the event slides open: when, where with the street address, the organizer, the contact person, registration details, and the buttons. Swipe or tap the handle to go back; Previous event and Next event move along the list.
Reminders and taking part#
Every event carries two buttons: Remind me, and I want to play on a sports instance or I'm going on any other.
How a person sets a reminder#
- Tap Remind me. The first time, a small sheet asks for the e-mail address only.
- Rundplan mails a confirmation. The person opens the mail and clicks Confirm. That one click confirms the address, signs the phone in and offers push alerts.
- From then on, every tap on Remind me is one tap.
The promise is on the sheet, and it matches what the server does: one reminder the day before, one on the morning of the event, never anything after the event.
How a person joins the list for an event#
- Tap I want to play. The sheet asks for the name and the e-mail address, and says plainly: this is a wishlist, not a commitment.
- The person confirms the mail as above.
- Five days before the event, or earlier when the registration deadline is earlier, Rundplan mails one question: are you playing? The person clicks I'm in or I withdraw on the landing page. An unanswered question gets one short reminder per day until the answer, the deadline or the event day.
- A person who answered I'm in gets a confirmation mail and the two reminders, and the organizer sees them as confirmed.
The organizer contacts confirmed participants about the official entry. Rundplan's list is interest and confirmation, not the entry itself.
What the organization sees#
Administrators open the Organization page → People. It lists every person with e-mail, name, town, whether the address is verified, whether they opted out, their wishes and when they were last seen, with an Export CSV. Each event shows its counts: reminders, interested, confirmed.
Push notifications#
Push is opt-in per phone. After confirming the first mail, the app asks Turn on alerts on this phone? and explains: a ping the evening before and on the morning of your events, on top of the mail. Later, the Account page carries the switch Alerts on this phone.
Push has to be enabled for the instance by Digipart. Where it is not, the app never asks.
Signing in on a device#
A person's identity is their e-mail address. There is no password.
- Open Account in the bottom bar.
- Enter the e-mail address and tap Send me the sign-in link.
- Open the mail on the phone that should be signed in and click Sign me in. The link works for one hour and once.
The screen never says whether an address is known. The mail carries the truth: a sign-in link for a known address, a gentle "nothing here yet" for an unknown one. Once signed in, a device stays signed in for half a year of activity.
The Account page#
Account shows the signed-in address, Sign out, and Alerts on this phone. Under it, the page lists what comes next: change and test the mail address, language, my details, participation history, and privacy and data.
Opting out and deleting#
- Every mail carries an unsubscribe link. It opens a page with an Unsubscribe button; after that, no more mails, ever, and Rundplan honours it in silence even if the person taps buttons again.
- The same page offers Delete my data too. It removes the person, their wishes, their devices and their player link.
- A signed-in person can also delete themselves from the app. An administrator can delete a person from the People view.
Nearby#
Nearby in the bottom bar shows the clubs of the federation and the events by town. It is not geography: there are no coordinates and no map. The person picks a town once, and the phone remembers it. Two sides behind one toggle: Clubs, with where they play, when they play and how to reach the club, and Events in that town.
Nearby appears only when the community feature is switched on for the instance and there is data to show: a club with a town or an event with a town.
What the app never shows#
- Events under a type that cannot be public, and events in any status other than published or completed.
- Anything internal: notes, the protocol, the approval chain, attachments, drafts.
- A person's private phone number or e-mail. Club cards show the club's official contacts only.
- Suspended players and placeholder players. See the sports add-on section.
- Any other person's reminders, wishes or identity.
Rules worth knowing#
- The app is per instance and shows that instance's events only.
- Every mailed link opens a page with a button. Nothing happens until the person clicks. This protects against mail scanners that open links.
- A first-time tap always costs an e-mail address and a confirmation. Without a confirmed address, no reminder can ever be sent, and the app says so.
- Taps and sign-in requests are limited per address and per phone to keep the mailbox of a stranger safe. The app says Too many tries — please wait a while when the limit is reached.
- Persons exist in one of three languages, English, German and Romanian, set from the app's language when they first tap. Every mail to a person is in their language.
- The person's cookie is separate from the staff session. A staff member can use the app as a person on the same phone without any collision.
Common questions#
Do we have to publish the app in the app stores? No. It is a web app that installs from the browser. There is nothing to submit, nothing to review, nothing to update on the phone.
Can a person see who else is coming? No. The lists are visible to the organization's administrators only.
A person says they never got the reminder. Ask them to check spam, and whether they clicked the confirmation link. The app's confirmation says so: if the confirmation mail did not arrive, the reminder will not arrive either. The Account page will let them change and test the address.
How do I switch the app to our own colours? Settings → General → Display: the accent and background colours and the logos are what the app wears, including the icon on the home screen.
Can we turn the app off? Switch off Publish this calendar in Settings → Calendars. The app then says the event list is not published at the moment.
What is the difference between "I want to play" and "I'm going"? Only the wording. A sports instance says play; every other organization says going. The mechanics are identical.
Does the app work on a desktop browser? Yes. It is designed for phones and looks fine on a desktop as a narrow column.
Sports add-on: players, clubs, results and rankings#
What it is#
The sports add-on turns the organization tool into a federation's registry: the players, the clubs, the results of every competition and the rankings computed from them. It is a licensed feature, Sport registry in Settings → Features, switched on for sports federations and left off for a city or a promoter. With it off, nothing of this section exists on the instance.
Everything lives on the Organization page, beside the org chart, as four more views: Players, Clubs, Rankings and Integrity. On the public side, the mobile app shows the rankings and a card per player, and a person can connect themselves to their player.
Player and club data can come from a scoring system. Rundplan reads from Darts Flux, a scoring system some federations run their competitions on, when the administrator switches that on. Everything else can be entered by hand.
Players#
The Players view#
- Open the Organization page from the people icon in the top bar and switch the view to Players.
- Search by player, nickname or club. Filter by Division, Status and Club.
- Each row shows the photo, the name, the nickname, the club, the division chip, the rank and points, and the status pill.
- Click a row to open the player, grouped Identity, Stats and Management.
The org chart also shows a short players strip under each club card, with a link to the Players view filtered by that club.
The three halves of a player#
| Group | Fields | Who owns them |
|---|---|---|
| Identity | Full name, nickname, division, town, birth year, throwing hand, darts, playing since, profession, photo | Read from the scoring system when synced; an administrator's edit takes the field over |
| Stats | General rank and points, season rank and points, legs and matches won and lost, season average, highest checkout, honours, other details | Read from the scoring system when synced |
| Management | Status, licence number, licensed from and until, admin notes | Yours alone; a sync never touches them |
When an administrator edits a synced identity or stats field, that field on that player gets a Local marker: edited here, no longer updated from the scoring system. Every other field keeps following the sync. Administrators can edit anything without silent divergence.
Status#
| Status | Meaning |
|---|---|
| Registered | A member with a club |
| Independent | A member without a club, held in the independents group |
| Prospect | A placeholder for a player who is not yet a member |
| Inactive | No longer served by the scoring system, or set so by an administrator |
| Suspended | Under sanction, set by an administrator |
A player absent from the newest sync reads as inactive without anyone writing it. When the feed serves the person again, the status heals.
Players without a scoring system#
Today the registry is filled by the sync and edited by hand afterwards. Adding a player from the screen without a scoring system entry is planned; until then, ask Digipart to load a list.
How to sync from the scoring system#
- An administrator switches on Sync from Darts Flux in Settings under Darts Flux. The switch is off on instances that do not use it.
- In the Players view, click Sync from Flux. The line beside it shows the last sync.
- The result reads: Synced: 12 new, 215 updated, 0 without club, plus failed photo downloads if any.
A player is matched by the scoring system's id, never by name. A club is matched by the External ID on the club's organization; fill it in on every club before the first sync, otherwise players land without a club and the sync says how many.
Players absent from the feed are never deleted. Absence means not served, not gone.
Clubs#
The Clubs view is the same drill with fewer fields. A club is an organization at the club level of your structure, with a club profile on top.
- Activity: players by division, championships, cup and league results as free text.
- The public profile: Region, Town, Playing address, Play days, Founded, President, Club phone, Club email, Website, social links and a Description. The dialog says it plainly: everything here is published on the website and in the app, so enter the club's official contacts only, never a person's private phone or e-mail.
- Management: licence number, licensed from and until, notes. Never public.
Clubs can be synced from the scoring system the same way as players, matched by External ID. A profile typed by hand keeps its typed values even when a later sync would overwrite them.
Results and rankings#
Results#
Results arrive from the scoring system, one row per player per competition per division: men, women, juniors. Each row carries the placement and the points. Results are linked to the event in the calendar by the event's external id, so the competition on the ranking sheet and the event on the plan are one thing.
Results whose player is unknown are kept, not dropped. They create an ID stub, a player known only by a number, in the independents group, marked inactive at birth. When the feed later serves the person, the stub heals into a real player. Nothing is ever merged by name.
The Rankings view#
- Switch the Organization page view to Rankings.
- Pick the Season and the Division: Men, Women, Juniors.
- The sheet has five fixed columns, Pos, Player, Club, General and Season, followed by one column per competition of the season, in date order.
- Season is the sum of the stored results of this season. General is the overall standing the scoring system reports.
A competition not yet played this season shows the previous season's results greyed in its column, so the sheet never has a hole. When the results arrive, they replace the column.
The rankings in the public app#
The app has Rankings in the bottom bar when the public calendar is on, the sport registry is on, and at least one player is served. The list shows the rank, the name, the club and the points. Division chips in the top bar switch between the divisions that exist in the data; All lists everyone. Search finds a player by name, club or town, with or without diacritics.
Tap a row and the player's card opens: photo, name, nickname, club, town, division, the Overall and Season rank and points, the profile facts that exist, and the Results newest first with competition, placement and points.
What is public about a player#
Public: name, nickname, division, town, club, photo, birth year, throwing hand, darts, playing since, profession, honours, ranks and points, the stats, and the results.
Never public: the licence number and dates, admin notes, other details, the scoring system's ids, the e-mail address. Suspended players are not served at all; a sanction is not published. Prospects are not served; they are placeholders.
Connecting a person to their player#
A person in the app and a player in the registry are two different things. A person is an e-mail address with a phone and reminders. A player is a registry row with results and a rank. Rundplan never guesses that they are the same, not by e-mail and not by name. The federation confirms every link.
How a player claims their entry#
- Sign in on the Account page of the app.
- Open Rankings, find yourself, open your card and tap This is me. Add a line that helps the federation confirm it: club, town. Or, when you are not in the list, open Player in the bottom bar, tap I'm not in the list, and tell the federation who you are, optionally naming an event you played.
- The Player page says Request sent. The federation confirms it. Nothing else is shown until then: no results, no rank. Withdraw takes the request back.
- After confirmation, the Player page says Connected and shows the card inline. After a refusal, it shows the federation's note and Try again.
A person can hold one live request at a time; a new request replaces the earlier one.
How the federation confirms a claim#
- Open the Inbox → Tasks → Player claims. A claim shows the person's address and name, the claimed player or Not in the list with the note and the named event.
- When the claimed player is already connected to another address, an amber line says so: approving moves the link. This is the normal path for a lost mailbox or a second address.
- For a claim without a player, pick the player in the inline picker first.
- Click Approve with an optional note, or Reject with a note the person reads.
Administrators can also link, unlink and merge from the Organization page → People: Link player… picks the player directly, Unlink player ends a link, and Merge into… folds one person into another, moving wishes, devices and the player link, and deleting the duplicate.
One player is connected to one person, and one person to one player. Unlinking is an administrator's action.
Integrity checks#
The Integrity view and the Integrity tab of the inbox list what the data checks found. The checks run after every sync, at start-up and on demand with Run checks now. A finding never changes data; it points at it.
| Check | What it means |
|---|---|
| Competition past its date has no results | Started more than two days ago, no results arrived; every season total that should include it does not |
| Competition not in the calendar | The results feed carries a competition no event claims by external id |
| Results reference unknown players | Some rows point at players the instance does not hold, or holds as ID stubs |
| Unresolved player (ID stub) | A player known only by a number; the finding lists what the instance knows about them |
| Season points differ from the feed | The stored season sum and the feed's season total disagree |
| Player missing from the newest feed | Served earlier, absent now; reads as inactive until an administrator decides |
| Two players with the same name | May be one person or two; a human decides, nothing is merged |
| Flux club not matched to any club | A club in the feed that no organization claims by external id |
Findings are Info, Warning or Blocking. Acknowledge takes a finding off the open list without changing data; Reopen brings it back. Administrators get one update per run that changed something, and a row for each new blocking finding.
Settings → Data integrity → Hold publishing until integrity findings are reviewed stops an event from being published while open warnings or blocking findings attach to it or to its competition. Whoever publishes anyway writes a reason, and the protocol records it.
Rules worth knowing#
- The add-on appears where the instance has the data. A municipality instance never grows a rankings page.
- Matching is by id and by external id, never by name. Name matching would be coin-flipping, and a wrong merge is the one mistake a registry must not make.
- A claim shows nothing until it is approved.
- Player photos come from the scoring system into Rundplan's own file store, so the app does not depend on another site being up.
- The sync never deletes. What is gone from the feed reads as inactive; what was never in the feed stays as it was entered.
Common questions#
A player changed clubs. What do I do? Sync. The scoring system's club assignment lands on the next sync, unless an administrator took the club field over on that player. Or edit the player and set the club by hand; that takes the field over.
Two players in the list are the same person. The integrity check lists same-name pairs. Decide, then merge the persons on the People view if they both claimed, and correct the results at the source. Rundplan does not merge players by itself.
A player asks why their rank in the app differs from the sheet. The app shows the season rank and falls back to the general rank. The sheet shows both. Check which one they are looking at.
Can a club see its own players only? A club administrator sees the whole registry but edits only their own club's players.
Why is a suspended player missing from the app? On purpose. A sanction is not published. The player stays in the registry with the status Suspended.
Can a player edit their own profile in the app? Not yet. Profile editing from the app is planned. Today the federation edits the registry.
Somebody claimed a player that is not them. Reject the claim with a note, or, if the link was already approved, unlink it from the People view. A wrong link shows results to the wrong person until then, so treat claims with care.
Languages, security and your data#
What it is#
This section answers the questions a data protection officer, an IT person or a careful manager asks before signing: which languages the system speaks, how sign-in and rights work from the user's side, where the data lives, how it is backed up, what is on record, and how a person or an organization gets their data out or deleted.
It states what exists today. Where something is provided by Digipart as a service rather than by a button in the app, it says "available on request".
Languages#
- The whole interface exists in German, English and Romanian.
- Settings → General → Language sets the Default language of the instance. It applies to everyone who has not picked their own, and to the pre-login pages.
- People who can open Settings pick My language for themselves. It applies at once and is remembered on the device. Everyone else sees the default language.
- Every mail is written in the recipient's language, both for staff and for the public who use the app. The public app's users get the language they first tapped in.
- Custom field labels are stored per language. The spreadsheet import accepts headers in all three languages; the export writes them in yours.
- Your organization's own words are data, not translation: level names, the category axis, category notes, conflict rule labels and taxonomy labels are written by you and shown as typed.
- Dates and numbers follow the reader's language. Money follows the federation's format everywhere, so a poster reads the same in every language.
Security as the user sees it#
Signing in#
- Staff sign in with e-mail and password on the instance's sign-in page. The page wears your logo and colours and speaks your default language before anyone signs in.
- A new account starts with an invitation mail or a password set by an administrator. Either way the person must change the password at first sign-in, and nothing else in the app opens until they have.
- A password is at least 10 characters. Change password in the account menu changes it any time.
- Forgot password? on the sign-in page mails a reset link. The page answers the same way whether or not the address exists, so nothing leaks about who has an account. Reset and invitation links work once and expire.
- Too many failed attempts lock the address for 15 minutes.
- A session stays valid for 30 days of activity and ends when you Sign out or when an administrator deactivates the account. A deactivated account is told so plainly at sign-in.
The public app's users never have a password. They sign in with a mailed link that works once, for one hour, on the device that opens it.
Rights#
Every right is decided on the server, on every request. The app hides buttons you may not use, but hiding is a courtesy; the server is the gate. Around seventy refusals are translated into plain sentences, for example "That organization may not file events" or "Seat limit reached".
Rights come in bundles per organization level: Standard, Approvals, Branch admin, or Custom with individual capabilities. The permissions register in Settings → Permissions lists every person whose rights go beyond a standard account. See the people and permissions section.
Two people editing the same thing#
- When two people edit the same event or poster, the second one to save sees Changed while you were editing, with who saved and when, and chooses Reload their version or Overwrite with mine. Nothing is overwritten silently.
- While somebody edits an event or a poster, others see {name} is editing this event and can Open read-only, Continue anyway, or, as an administrator, Take over.
What the app never does#
- It never shows an error page with technical details; errors are plain sentences.
- It never lets a browser fetch a file from an address it does not control. Calendar feeds and website icons are fetched by the server, with checks.
- It never serves one client's data on another client's address.
Where your data lives#
- Every client has its own instance: its own database, its own uploaded files, its own configuration, its own domain and its own mail settings. There is no shared database between clients.
- Instances are hosted in Germany.
- Deployments rebuild the application only. The data directory is never touched by an update, and every instance is snapshotted before every update.
Backups#
- Every night, a consistent backup of each instance's database is taken. The newest 14 are kept.
- Uploaded files are archived alongside, whenever something changed since the last archive; the newest four archives are kept.
- The hosting provider takes a nightly snapshot of the whole server on top.
- A restore takes the database dump and the matching files archive. Rollback of the application is a redeploy of an earlier build.
- Encrypted off-site copies of the backups are available on request.
What is on record#
- Every event carries an Audit log tab: created, submitted, approved, rejected, resubmitted, published, edited, status changed, attachments changed, poster changed, poster confirmed, revision saved, submitted, approved, rejected, discarded, published without a current poster, imported. Each entry names who and when, and carries the note where one was written.
- A published event changes through revisions, never by silent overwrite. The audit log records what changed.
- A deleted event leaves a record. The deleted-events trail exists and is complete; it has no screen yet.
- Every circular keeps its receipt list as the record of who was told what and when.
- Every mail attempt, sent, held back or failed, is logged.
- Every override of a gate, a poster missing or integrity findings open, is written with its reason.
- None of these records can be purged from inside the app.
Getting data out#
- Any calendar view exports as a spreadsheet or a calendar file. See the import and export section.
- The configuration exports as a preset file.
- The people who use the public app export as a spreadsheet from the People view.
- Posters export as images and as layout files.
- A complete, machine-readable export of everything an instance holds is available on request.
Deletion#
A person who uses the public app#
- Every mail carries an unsubscribe link. After Unsubscribe, Rundplan sends no more mail to that address and keeps that promise in silence.
- The same page offers Delete my data too: the person, their wishes, their devices and their player link are removed.
- A signed-in person can delete themselves from the app. An administrator can delete a person from the People view.
A staff account#
- An administrator deletes a person from the org chart with Delete person. This removes the account and its seat. The last administrator cannot be removed, and nobody can delete themselves.
- Deactivating an account instead keeps its history and ends its sessions.
An organization or an event#
- Deleting an organization is refused while it still owns anything: sub-organizations, users, events, players, a club profile, requests, rules or credits. The refusal names every blocker. Nothing is cascaded silently.
- Deleting a published event asks for a note, notifies the officials and removes it from every public door at once. The record stays.
An instance#
When a contract ends, the instance is stopped and its data, files and backups are removed. The procedure and the confirmation are part of the data processing agreement and are available on request.
Retention#
Records of events, approvals and circulars are kept for the life of the instance; they are the organization's own history. Public competition results are kept; a ranking that forgets its past is worthless. Personal data of people who leave is deleted as described above. A scheduled clean-up of expired sessions, spent links and unverified addresses is available on request, as is a retention schedule tailored to your rules.
What to ask Digipart for#
- The data processing agreement.
- The list of sub-processors: the hosting provider, the mail provider, and the push services of the phone platforms for those who switch alerts on.
- The record of processing activities for your instance.
- A privacy notice for the public app in your language.
- The breach procedure.
- A full export, an off-site backup copy, or the deletion of an instance.
Rules worth knowing#
- Mail can be pinned to named domains during a pilot. Anything else is held back and logged rather than delivered, and the app behaves as if it had sent.
- Feature switches, presets and the demo import are operator actions. No federation administrator can change the operator account or reach those surfaces.
- Uploads are checked by their actual bytes, not by their file name. SVG files are cleaned. Nothing is stored under a name a user chose.
Common questions#
Where exactly is our data? On your own instance, on a server in Germany, in your own database and file store. No other client shares it.
Who at Digipart can see our data? The operator account exists on every instance for maintenance. Its actions are logged like everyone else's.
Can we get everything out if we leave? Yes. Views, configuration, people and posters export from the app today; the complete export is provided on request, and the instance is deleted after.
Can a person ask what you hold about them? A staff member's data is their profile and their actions on record. A public app user's data is their address, their name and town if given, their wishes and their devices. Both can be provided on request; the public app user can delete themselves at any time.
How long are backups kept? Fourteen nightly database backups and four file archives on the server, plus the provider's nightly server snapshots.
Do you use cookies? Two session cookies, one for staff and one for public app users, both needed for the service to work. No tracking, no third-party analytics, no advertising. There is nothing to consent to and no banner.
Is the traffic encrypted? Yes. Every instance is served over an encrypted connection with certificates that renew themselves.
Who receives our mail? Mail goes out through a transactional mail provider named on the sub-processor list, with your instance's own sender address.