Skip to content

luckycrm/Timey

Timey

Timey Logo

License: Apache-2.0 TypeScript React TanStack Start SpacetimeDB Bun Contributors

Timey is an open-source employee, project, and time management platform for modern teams.
It combines passwordless access, organization onboarding, member management, and real-time collaboration into one fast web app.

What You Get

  • Passwordless OTP authentication with server-side sessions
  • Workspace onboarding (create or join by workspace code)
  • Team membership and invite flows
  • Realtime collaboration powered by SpacetimeDB
  • Global time awareness for distributed teams
  • Clean TypeScript-first codebase ready for open-source contribution

Screenshots

Login

Product Direction

Timey is built to become a full operating layer for:

  • Employee management
  • Project management
  • Time and coordination management

Current release focuses on identity, workspace setup, members, invites, chat, and real-time foundations.
Project/task planning and deeper time tracking can be added on top of the existing schema and reducer model.

Tech Stack

  • Frontend: React 19 + TanStack Start + TanStack Router + React Query
  • UI: MUI
  • Backend runtime: TanStack Start server functions
  • Realtime data layer: SpacetimeDB
  • Auth: Email OTP + signed session cookie
  • Package manager/runtime: Bun

Quick Start

1. Install dependencies

bun install

2. Configure environment

Create .env.local:

SESSION_SECRET=change-me
ZEPTOMAIL_TOKEN=your-zeptomail-token
VITE_SPACETIMEDB_HOST=https://maincloud.spacetimedb.com
VITE_SPACETIMEDB_DB_NAME=timeydb
DYTE_ORG_ID=your-dyte-org-id
DYTE_API_KEY=your-dyte-api-key
DYTE_PRESET_NAME=group_call_host

3. Run locally

bun run dev

App runs at http://localhost:5173.

SpacetimeDB Workflow

When changing schema/reducers in spacetimedb/src/index.ts:

bun run spacetime:generate

To publish module updates:

bun run spacetime:publish

To build the module directly:

bun --cwd spacetimedb run build

Scripts

  • bun run dev start local dev server
  • bun run build build production assets
  • bun run preview preview production client build
  • bun run start run generated server output
  • bun run spacetime:generate regenerate client bindings
  • bun run spacetime:publish publish SpacetimeDB module

Project Structure

src/
  components/       UI and feature components
  hooks/            auth and data hooks
  routes/           file-based app routes
  server/           server functions (OTP, invites, sessions)
  module_bindings/  generated SpacetimeDB bindings (do not edit)
spacetimedb/
  src/index.ts      schema + reducers

Open Source Roadmap

  • OTP auth and session lifecycle
  • Organization onboarding and workspace joins
  • Member invites and workspace membership
  • Realtime team chat foundations
  • Multi-timezone awareness primitives
  • Project entities, milestones, and ownership
  • Task boards and workflow states
  • Time entries, attendance, and reporting
  • Role-based permissions and audit trails

Implementation Status (March 7, 2026)

Done

  • Chat page supports threaded replies, reactions, message editing, mentions, emoji picker, and read-state sync.
  • Global right-side messenger panel is available outside /chat.
  • Messenger supports both direct messages and group channels.
  • Floating chat windows open from the messenger panel.
  • Maximum 2 floating chat windows are kept open; opening a third replaces the oldest open window.
  • Floating thread view now opens as a full thread screen in the same chat card with a top back button.
  • Online/offline presence is global (not only /chat) via SpacetimeDB heartbeat updates.
  • Topbar user profile shows live online/offline status.
  • Incoming message sound plays when user is away from active chat context.
  • System notifications for incoming messages work when user is away and notification permission is granted.
  • Message input and message list UI in floating chat are aligned with shared chat components.
  • Dyte video call integration is added to chat headers (start call -> open in-app Dyte meeting dialog).
  • Dyte server bridge is added (src/server/dyte.ts) to create meetings and participant auth tokens securely.
  • Call sessions are now chat-native via SpacetimeDB (chat_call_session, chat_call_participant) with active call discovery, join, leave, and end flows.
  • Meetings manager is live at /meetings with channel/public meeting scheduling and join-window enforcement.
  • Meetings manager is simplified around actual operations instead of placeholder panels.
  • Full-screen calendar view is redesigned as the primary calendar surface, with date popup workflows, in-place meeting creation/editing, conflict surfacing, drag rescheduling, and ICS export.
  • Meeting settings are redesigned into a guided setup flow for office users (booking page, booking types, weekly availability, reminders/follow-up).
  • Booking requests are moved to /meetings/requests as a dedicated host workflow page.
  • Meeting activity and follow-up are moved to /meetings/activity as a separate operational page.
  • Meetings manager, calendar, requests, activity, and settings now share a standard meetings UI shell and a consistent submenu/sidebar.
  • Public booking pages are available at /u/:handle and /u/:handle/:eventTypeSlug.
  • Public booking event pages are redesigned into a cleaner booking flow with calendar-first scheduling and separate details confirmation.
  • Booking approval workflow is live for event types with requireApproval (pending queue + approve/decline in /meetings/requests).
  • Public booking flow now suggests nearby alternative slots when conflict/availability errors occur.
  • Booking management links are live at /booking/:token, redesigned as a guest-facing page with join-first flow plus manage controls.
  • Public scheduled meetings now support true external guest invite links via /meet/:inviteToken instead of pointing outsiders into the workspace portal.
  • Host booking operations are now available on /meetings/requests, including approve/decline, start/join meeting, reminder email, reschedule, cancel, and guest manage-link actions.
  • Meeting lifecycle emails are sent via ZeptoMail for booking request/confirm/decline/reschedule/cancel and scheduled-meeting notices.
  • Confirmed/rescheduled notices include .ics calendar invite attachments.
  • Reminder templates can queue reminder deliveries in /meetings/settings, with due-now bulk dispatch, manual single-send, and failure tracking.
  • Direct reminder emails can also be sent from /meetings/requests for approved bookings.
  • Post-meeting follow-up nudges are available from /meetings/activity for ended bookings.
  • Global radius tokens are added and main chat/dashboard/meetings/public-booking surfaces are standardized to the same corner system.

To Do

  • Closed-tab/browser push notifications (requires Service Worker + Push API + backend Web Push).
  • Notification preferences UI (sound on/off, desktop notification toggle, channel-level controls).
  • Additional mobile refinements for floating messenger behavior.
  • More chat QA coverage for reconnect/offline/online transitions and multi-account switching.
  • Reminder automation worker so reminders send without opening settings.
  • External calendar sync (Google/Microsoft).
  • Enterprise reporting and compliance automation for meeting lifecycle.
  • End-to-end automated tests for public booking, guest join, and host request flows.
  • See the detailed meetings plan in docs/meetings-roadmap.md.

Contributors

Contributing

Contributions are welcome.

  1. Fork the repo
  2. Create a branch (feat/your-feature)
  3. Commit with clear messages (feat: ..., fix: ...)
  4. Open a pull request with screenshots/notes when UI changes are included

Generated files like src/module_bindings/ and src/routeTree.gen.ts should not be manually edited.

Read:

Automated review:

  • CodeRabbit checks are configured via .coderabbit.yaml
  • Install/enable the CodeRabbit GitHub App on this repository to activate PR checks

Security Notes

  • Keep secrets in .env.local
  • Never commit production keys
  • Rotate SESSION_SECRET and mail credentials regularly

Funding

If this project helps your team, support ongoing development via GitHub Sponsors.

License

Licensed under Apache 2.0. See LICENSE.

About

Timey is a real-time team chat application built with TanStack Start, React, and SpacetimeDB. Features include direct messages, group channels, message reactions, and presence tracking.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors