SkyLite-UX

Skylite UX

The open-source family manager

Discord Docker Nuxt NuxtUI TailwindCSS Prisma PostgreSQL

About

Skylite UX was conceived as an open source, self-hosted alternative to commercial family managers. Most commercial offerings require expensive hardware and include subscriptions. Our goal was to create an offering that allows you to bring your own hardware, avoid subscriptions, and subscription associated feature creep while playing nicely with other self-hosted offerings.

Features

Docker Deployment

Easy deployment with Docker containers

Family Calendar

Manage family events and schedules

Task Lists

Track to-do lists for family members

Shopping Lists

Track your shopping lists

Meal Planning

Plan and organize family meals

User Management

Manage family members with custom profiles

Feature Preview

Calendar

Lists

Meals

Users

Installation

Docker CLI

# Create a network
docker network create skylite-network

# Create a volume for PostgreSQL data
docker volume create postgres-data

# Run PostgreSQL
docker run -d \
  --name skylite-ux-db \
  --network skylite-network \
  -e POSTGRES_USER=skylite \
  -e POSTGRES_PASSWORD=password \
  -e POSTGRES_DB=skylite \
  -v postgres-data:/var/lib/postgresql/data \
  postgres:16

# Run Skylite UX
docker run -d \
  --name skylite-ux \
  --network skylite-network \
  -e DATABASE_URL=postgresql://skylite:password@skylite-ux-db:5432/skylite \
  -e NUXT_PUBLIC_TZ=America/Chicago \
  -e NUXT_PUBLIC_LOG_LEVEL=warn \
  -p 3000:3000 \
  wetzel402/skylite-ux:latest

Docker Compose

services:
  skylite-ux:
    image: wetzel402/skylite-ux:latest
    restart: unless-stopped
    environment:
      - DATABASE_URL=postgresql://skylite:password@skylite-ux-db:5432/skylite
      - NUXT_PUBLIC_TZ=America/Chicago
      - NUXT_PUBLIC_LOG_LEVEL=warn
    depends_on:
      skylite-ux-db:
        condition: service_healthy
    ports:
      - 3000:3000
    networks:
      - skylite-network

  skylite-ux-db:
    image: postgres:16
    restart: unless-stopped
    environment:
      - POSTGRES_USER=skylite
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=skylite
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: [CMD-SHELL, pg_isready -U skylite]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - skylite-network

networks:
  skylite-network:
    driver: bridge

volumes:
  postgres-data:
    driver: local

Configuration

Make sure to update the following environment variables in your docker-compose.yml:

Development

For detailed development setup, environment configuration, and workflow guidelines, see our Development Guide.

Prerequisites

Quick Development Commands

# Start development server
npm run dev

# Build for production
npm run build

# Run type checking
npm run type-check

# Lint code
npm run lint

Contributing

We welcome contributions from the community! For detailed information on how to contribute, including our code of conduct, development process, and guidelines, see our Contributing Guide.

Quick Start for Contributors

  1. Fork the repository
  2. Create your feature branch from dev
  3. Make your changes following our style guidelines
  4. Test your changes thoroughly
  5. Submit a Pull Request

Ways to Contribute

License

Distributed under the MIT License. See LICENSE for more information.

Special Thanks

The calendar UI was rewritten from OriginUI React code with express permission. Thank you Pasquale and Davide!