Skip to content

Repository files navigation

Awaywell, a time off app built with Elements: the team calendar for October, with vacation, sick and personal days in different colors and pending requests striped.

Awaywell

A demo app built with Elements.

Request time off, approve it with a comment, track balances by type, and see who is out on a live team calendar with .ics feeds.

Demo: Awaywell

Agent specs

  • Agent: Claude Code, Opus 5.5 Medium
  • Time: 14 min
  • Cost: $5.08 at API rates, September 2026

Get started

elements create awaywell -scaffold=elementscode/demo-awaywell

How it's built

Awaywell needed two kinds of accounts, emails on both sides of a request, a calendar feed per person, and a live team calendar. Each of those is a part of Elements, so the agent spent its 14 minutes on the time off rules themselves.

What Elements gave the app

  • A live team calendar. Every request, cancellation and decision notifies a channel. A manager's calendar and approvals page, and an employee's own page, each listen for their team or person and re-read, so a new request or approval shows up on an open calendar right away.

  • Requests and approvals as function calls. Requesting, cancelling, approving and denying are @rpc functions called from the page. The server counts working days, checks the balance and overlapping dates, and returns messages such as "those dates are all weekend" to the form.

  • Emails from a job. A background job emails the manager when a request comes in and the employee when it is decided, using two email templates. It is scheduled in the same transaction as the request, so mail follows committed changes.

  • A calendar feed per person. One route serves each person's approved time off as an .ics feed at a private url, and a manager's feed includes their team, so it subscribes in any calendar app.

  • Sessions and roles. Employees and managers each land on their own pages, and manager-only server calls share one guard.

  • Data from SQL files. Migrations define the schema, a working-days function used by both the app and the seed, and two managers with ten reports, balances and about forty requests in every status. The project server applied each one as soon as it was saved.

What the project server gave the agent

The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building.

What shipped

The app type-checks with zero errors and all 24 tests pass. Every page works on desktop and phone, and live updates arrive across sessions, such as an approval turning a request solid on a manager's open calendar.

Demo accounts

The seed creates two managers with five reports each, a balance per type for every employee (vacation, sick and personal), and about forty requests across this month and next in every status: approved, pending, denied and cancelled. The dates are set relative to the current month, so the calendar is always current. Every account's password is awaywell, and the sign-in page lists them.

Email Role Manager
maya@awaywell.test manager
priya@awaywell.test employee Maya Okafor
sam@awaywell.test employee Maya Okafor
lena@awaywell.test employee Maya Okafor
omar@awaywell.test employee Maya Okafor
jules@awaywell.test employee Maya Okafor
daniel@awaywell.test manager
aiko@awaywell.test employee Daniel Reyes
marcus@awaywell.test employee Daniel Reyes
noor@awaywell.test employee Daniel Reyes
theo@awaywell.test employee Daniel Reyes
rosa@awaywell.test employee Daniel Reyes

In development the emails for new, approved and denied requests are written to the job log instead of sent.

Demo: Awaywell

License

MIT. See LICENSE.

About

Request time off, approve it with a comment, track balances by type, and see who is out on a live team calendar with .ics feeds.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages