Skip to content

p-arndt/sentio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sentio – Team Mood Tracker

Sentio Logo

sentio [ˈsen.ti.oː] is Latin for "I feel" or "to perceive".

Everyone logs how they feel each day, and Sentio turns those entries into trends, insights, and early signals so teams stay healthy and connected.

Similar to a classic Niko-Niko calendar, but modern, visual, and built for real-world teams.

Team analytics — week view Team analytics — month view

Table of Contents

🌟 Features

Mood Tracking

  • One-click daily mood check-ins
  • Optional comments to explain your mood
  • Anonymous logging mode (per team)

Team & Personal Views

  • Team dashboards with current wellbeing
  • Personal mood history and insights
  • Weekly, monthly, and long-term trends
  • Detect drops or recurring negative patterns

Reminders & Notifications

  • Custom recurring reminders (day + time)
  • Browser push notifications
  • After-event reminders (e.g. “How did that meeting feel?”)

Integrations

  • Google Calendar (read-only) to show events in Sentio
  • Outlook / Microsoft 365 integration coming soon
  • Event-based mood reminders after calendar entries

Achievements & Gamification

  • Achievement system to reward positive habits
  • Achievements for activities like:
    • Logging your first mood
    • Logging moods for multiple consecutive days
    • Writing comments alongside moods
    • Reaching mood streaks (e.g., 7 days of positive moods)
  • Visual achievement badges in your profile

Team Management

  • Invite members
  • Configure roles and permissions
  • Manage mood options (emojis, colors, labels)

Nested Teams & Organizational Hierarchy

Sentio supports creating complex organizational structures with nested teams:

  • Parent-Child Relationships: Teams can be organized in a hierarchy by setting a parent team when creating or editing teams
  • Container Teams: Mark teams as "container teams" to group multiple sub-teams without having direct members. Container teams display all their child teams' calendars in a unified view
  • Organization Tree View: Visual tree structure showing your complete team hierarchy with expandable/collapsible nodes
  • Nested Calendar Display: When viewing a container team, all child teams are displayed as nested calendars with color-coded borders for easy distinction
  • Settings Inheritance: Child teams can inherit settings from their parent teams, making it easy to maintain consistent configurations across your organization
  • Hierarchy Navigation: Easy navigation through the team structure with breadcrumbs and direct links to parent/child teams

Perfect for organizations with departments, sub-teams, or multi-level structures!

🚀 Quickstart

Choose how you want to run Sentio:

Option 1: Docker Compose (recommended)

You can pull the image from either:

Steps:

  1. Copy docker/.env.exampledocker/.env

  2. Adjust your environment variables

  3. Start Sentio:

    docker compose up -d
  4. Open http://localhost:3000

Option 2: Local Development

git clone <repo-url>
cd sentio
pnpm install
pnpm run dev

Then open the dev server (usually http://localhost:5173).

⚙️ Environment Variables

Use .env or set them directly in your environment. Keep secrets private and secure.

Core Settings

Variable What it controls Example
PUBLIC_ALLOW_SIGNUP Allow or block public signup false
BETTER_AUTH_SECRET Secret for signing auth tokens random hex
BETTER_AUTH_URL URL of your Sentio instance http://localhost:3000
POSTGRES_HOST Database host localhost
POSTGRES_PORT Database port 5432
POSTGRES_USER Database user sentio
POSTGRES_PASSWORD Database password sentio
POSTGRES_DB Database name sentio

Authentication

Choose between email/password or OIDC login.

Variable Description
AUTH_PROVIDER email or oidc
EMAIL_AUTH_DISABLED Set true to force OIDC only
OIDC_CLIENT_ID OIDC client ID
OIDC_CLIENT_SECRET OIDC client secret
OIDC_ISSUER OIDC issuer URL

SMTP / Email

You can set SMTP via:

  • the Admin UI (saved to DB), or
  • environment variables (used as defaults)
Variable Purpose
SMTP_HOST SMTP server
SMTP_PORT SMTP port
SMTP_USER / SMTP_USERNAME Login name
SMTP_PASSWORD Password
SMTP_FROM Sender address

UI-configured values override the environment. Missing values fall back to the .env.

Web Push / Notifications (VAPID)

Variable Purpose
VAPID_PUBLIC_KEY Public VAPID key
VAPID_PRIVATE_KEY Private VAPID key
VAPID_SUBJECT Contact email/URL

Generate VAPID keys:

pnpx web-push generate-vapid-keys

Calendar Integration

Variable Purpose
PUBLIC_GOOGLE_CLIENT_ID Google OAuth ID for Calendar
PUBLIC_MICROSOFT_CLIENT_ID Microsoft OAuth ID (Outlook)
PUBLIC_MICROSOFT_TENANT_ID Microsoft Tenant ID
MICROSOFT_CLIENT_SECRET Microsoft OAuth Secret

These are only needed if you want to enable calendar integrations. We use them for OAuth flows only.

🔔 Reminders & Notifications

  • Set reminders with a title, message, time, and selected weekdays
  • Works across time zones
  • Push notifications require valid VAPID keys
  • Test notifications are available in Settings → Notifications

📆 Calendar Integration

Google Calendar

  1. Create an OAuth client in Google Cloud.

  2. Add redirect URL:

    https://<your-host>/api/oauth/google/callback
    
  3. Set PUBLIC_GOOGLE_CLIENT_ID

  4. Go to Settings → Calendar and connect your account.

Sentio requests read-only access.

Microsoft Outlook / 365

  1. Create an app in the Azure Portal.

  2. Add redirect URL:

    https://<your-host>/api/oauth/microsoft/callback
    
  3. Set environment variables

    PUBLIC_MICROSOFT_CLIENT_ID=<your-client-id>
    PUBLIC_MICROSOFT_TENANT_ID=<your-tenant-id>
    MICROSOFT_CLIENT_SECRET=<your-client-secret>
    
  4. Go to Settings → Calendar and connect your account.

🤝 Contributing

  • Open an issue for bigger changes
  • Keep PRs focused
  • Include tests when adding new behavior
  • Follow formatting (pnpm run format)

Sentio helps teams better understand how they feel and react early when things change. Simple for individuals. Powerful for teams.

About

Team mood tracking with a Niko-Niko calendar.

Topics

Resources

Stars

Watchers

Forks

Packages