Calendar and due dates
One calendar for dated actions, meetings and recurring schedules, with five views, server-side conflict checks, working hours and leave, a booking page and an assistant that works in your own words.
Open in Flowra/calendarThis week
MeetingSprint planning, 10:00Dated actionBanner handoffRecurring scheduleFocus time, reservedConflict3 free times suggestedMonth view+2 moreOne person can't be in two places at once; the server checks this.
What this is wired to
What lands on the calendar
Three things: actions with a due date, meetings, and the occurrences of your recurring schedules, including requests still waiting for approval, which are drawn with an “Awaiting approval” label. A finished meeting is drawn too and marked “Ended” in the lists, because a calendar is a record of time and a week that has passed should not look empty.
An action without a due date deliberately stays off; it has nowhere to sit on a calendar. An action a schedule made for one occurrence is drawn once, as that occurrence, never twice. The colours are fixed: meetings are blue, overdue actions red, and every kind of schedule has its own colour.
The filter at the top says whose work you see: “All my work” (assigned to me, created by me, or personal with no assignee), “Assigned to me”, which shows the number of its open items next to its name, or “Created by me”.
Five views, one set of data
Every view reads from the same source, so whatever is in one is in all the others. Switch views from the menu beside the date; “Today” and the two arrows move by a day, a week, a month or a year depending on the view. “Today” is greyed out while you're already on today, but it stays in place.
The calendar follows your account's calendar setting: with the Persian (Jalali) calendar the week starts on Saturday, with the Gregorian one on Sunday, and month and day names are written in your language.
- Day (the default): twenty-four hours, with a line marking the current time that the page scrolls to the first time it opens. Tasks without a time sit in the “No time” card above the grid, and teammates on leave in the “On leave:” card
- Week: seven columns and twenty-four hours. The day names stay pinned above the grid, tasks without a time get a row of their own, and under a day when someone on the team is away, “on leave” is written with their count
- Month: equal-sized cells with the selected day's panel beside them (explained further down)
- Year: twelve small months; a day that has something of its own gets a dot (daily routines don't count, or the whole year would be dotted). A month's name opens the month view and each day opens the day view
- Agenda: a list from today onwards, day by day, for when you just want to know “what's next”. Past days are left out, and recurring schedules appear only for the coming week
The month view: equal cells, the day list beside them
In the month view every cell is the same size, however busy that day is, so the shape of the month never breaks. Each cell carries the day number and its item count and draws up to four items; with more, it draws three and counts the rest as “+N more”. Completed actions stay off the month grid, and a day with an overdue action turns red.
On desktop, clicking a day lists everything on it in the panel beside the month: meetings with their time and length, schedule occurrences with their time range, and actions with their status, project and due date, which you can tick off right there. The panel follows you as the page scrolls. Double-clicking a day, or the “+” at the head of the panel, creates something on that day.
The calendar on a phone
On a phone the page name sits large at the top, with “Create” and the connectors button beside it. “Today” moves to the filter row. The day view and the “Agenda” list are one long column that scrolls with the page, and the week grid, wider than the screen, has a sideways scroll of its own.
In the month view each cell shows only the day number and up to four coloured dots (blue for meetings, the schedule's colour for occurrences, red for overdue), and writes the count when there are more than three items. Tapping a day opens the same list as the desktop panel, sliding up from the bottom of the screen.
Creating tasks and meetings from the calendar itself
Every day and every hour is a starting point. “Create” opens today; tapping an hour in the day view or an empty cell in the week view opens that hour, and the “+” beside each day opens that day. The window that opens offers three paths.
- Task: the full action form, for a company's project or personal, with that day and time as its due date
- Meeting: title, time, length in minutes and the teammates you invite. Next to each name you can see whether they're on leave today or outside their working hours
- Recurring schedule: the schedule form, with that day and time as its start
- Once saved, the item lands on the calendar straight away
Conflicts are rejected on the server
One person can't be in two places at once. When you create a meeting or change its time, length or attendees, the meetings, reserved schedule blocks, working hours and leave of every one of those people are checked. The form asks half a second after your last change and keeps “Create meeting” disabled while there is a clash; the server checks again on save, so nothing slips through.
Refusing is not the whole job; free times are suggested as well: up to three, the closest to the hour you asked for, the same day first and then the following days up to a week, all inside everyone's working hours. The suggestions are buttons and replace the old time with a single tap. Recurring schedules get the same check, up to 180 days ahead, and there you can leave out just the clashing days.
- Give the meeting a time and a length and add your teammates
- If someone is busy at that time, a red box lists the conflicts with their title, time and the people involved
- Below it, “Free times” are suggested
- Tap one; the box clears and “Create meeting” turns on
Recurring schedules, in brief
A recurring schedule is a rule, not a pile of rows: “Start of day, Monday to Friday, 08:30 to 08:45, from October to March” is one schedule, and its occurrences are worked out for whatever range you're looking at. Create it from “Schedules” at the top of the calendar or from “Create”; the templates are ready: start and end of the workday, working hours, daily stand-up, weekly report, monthly review, work shift, focus time and a custom schedule.
It repeats daily, weekly (on weekdays, with “Workdays” and “All”) or monthly (on days of the month, with “Last day”), with “every N”, a start time, a length, a start date and an optional end date. “This block is reserved for meetings” means no meeting can land on its occurrences; “Display only” is just drawn, like working hours, and meetings are allowed in it. A schedule can also make an action with the same time for each person and each occurrence, up to two weeks ahead.
Tap any occurrence on the calendar to cancel or move just that one, or to edit, pause, end from today or delete the whole schedule. The full details are in the “Recurring schedules” guide.
Schedules for the team: assign and request
A schedule can be personal or belong to a workspace. Workspace owners and editors assign it to one or more members (or everyone), and it is active at once. Someone who doesn't run that space requests the schedule for themselves and can add a note for the manager.
A request is drawn on the requester's calendar with an “Awaiting approval” label. The space's managers see it in the “Requests” tab, and the number of waiting requests is shown on the “Schedules” button. Approving activates the schedule, and a rejection can carry a note for the requester; until a decision is made, the requester can also withdraw it.
Working hours and leave
In “Calendar settings” (the gear button at the top of the calendar) you decide when you can be reached: your time zone, and for each weekday whether it is on or off, with one or more time ranges (“Another range”, and “For all working days”, which copies one day onto the rest). Until you save, nobody is limited by your working hours; the form's default is Saturday to Wednesday, 9 to 5.
These hours are not a private preference; other people's actions are checked against them on the server. With “Apply working hours” on, a meeting with you, or a timed action someone else assigns to you, is refused outside these hours with the reason: “is on leave”, “this day is not a working day for them” or “is outside their working hours”, together with a few free times. An action without a time is accepted, but gets a warning if you're on leave that day. Work you assign to yourself is never limited.
Record leave with a start date, an optional end date and a note. Leave always counts, even with “Apply working hours” off: no meeting can be booked with you on those days, teammates see you're away in the day and week views, and on your own calendar the hours outside your working hours and your leave days are shaded.
The booking page, in brief
At the bottom of “Calendar settings” you build your own booking page, like Calendly: a public address such as /book/oliver, a display name and a short intro, and meeting types, each with a length, a venue (Flowra room, Google Meet or Zoom) and the questions you ask the guest. The meeting rules live here too: buffer between meetings, minimum notice and a daily meeting cap.
Guests pick a meeting type, a day and a free time without signing up, and leave their name and email. The times are your working hours minus your meetings, reserved schedules, buffers and minimum notice, and the server checks the time again when it is booked. A booking becomes a real meeting on your calendar with a “Booking” badge, and the guest gets a link to reschedule or cancel. The details are in the “Booking page” guide.
Calendar assistant
The “Assistant” button at the top of the calendar opens the “Calendar assistant”. Write what you want in your own words, or tap one of the examples: a meeting (with whom, when, how long), a recurring schedule for yourself or the team, working hours, leave, or moving an action to another day. It asks for whatever is missing with short questions and ready-made answers.
The result is a list of changes; you can edit or remove each row and then confirm with “Do it in the calendar”. Each change runs through the app's usual path, so it gets the same conflict and working-hours check, the same manager approval for a space you don't run, and the same action history. If a time clashes, it offers free times to choose from.
You can ask questions too, such as “What do I have today?”, “Summarise this week's meetings” or a free time shared with someone; a question changes nothing. When AI isn't available, the assistant works with its built-in reading and ready-made questions and says so with a “Without AI” label.
Connectors and sync
“Connectors” at the top of the calendar opens the calendar's connections page. Google Calendar connects through a real sign-in and creates a separate dedicated calendar called “Flowra”, never your main one. Your own dated actions and meetings go to it; a meeting with its real time and length, an action at its due time. The same connection is what makes a Google Meet link for a meeting possible.
Title, description, day, time and “done” travel, and nothing else; status, priority, assignee and checklist have no calendar equivalent. A meeting is never edited or cancelled from the calendar, because it is shared with other people. Sync has no background worker, and the time of the last sync is shown. If the server's operator hasn't set up the Google keys, the card says “Unavailable”.
MCP is on the same page: your own Claude, ChatGPT or Cursor, with a token you create, sees your meetings and due dates and books a meeting that doesn't clash with anyone's meetings or schedules. Apple Calendar, Outlook and CalDAV are listed as “Coming soon” and don't do anything yet.
When an event is deleted from outside
If you delete an action's event from the external calendar, the action is not deleted; it is cancelled, and that is written into its history. The history is the point, and erasing destroys it.
Links to actions, projects and meetings
The calendar never makes a second copy of anything; every item is linked to its own home. Tapping an action opens that action's page with its assignee, subtasks, discussion and history, and ticking it in the day panel marks that same action done. Tapping a meeting opens the meeting page; a meeting held in Google Meet or Zoom hands you that link.
Project actions assigned to you or created by you show up here with their due dates, and the kickoff meeting the project assistant sets up is a real meeting on every member's calendar. Schedule notifications open that schedule straight on the calendar.
A well-ordered week, step by step
This is the path most people take with the calendar, and every step is covered in one of the sections above.
- In “Calendar settings”, save your working hours and time zone and record any upcoming leave
- Create the start and end of your workday and your focus time as recurring schedules
- Set up a stand-up for the team, or request one if you don't run the space
- Book meetings from the calendar itself, and if there's a clash, tap one of the free times
- Create your booking page and send its link to your clients
- Hand the small jobs to the calendar assistant and review the week in the week or month view
- If you like, connect Google Calendar so your due dates are on your phone too