Skip to content
Check-in Scheduler Platform - HaloLight

Check-in Scheduler Platform โ€‹

HaloLight Action is a modern check-in scheduler platform built with Next.js 14 App Router and Supabase, supporting multi-platform automatic check-ins, task scheduling, execution tracking, and push notifications.

Live Preview: https://halolight-action.h7ml.cn

GitHub: https://github.com/halolight/halolight-action

Tech Stack โ€‹

TechnologyVersionDescription
Next.js14.2App Router architecture
TypeScript5.7Type safety
SupabaselatestPostgreSQL + Auth + RLS
Tailwind CSS3.4Utility-first CSS
shadcn/uilatestRadix UI component library
TanStack Query5.xServer state management
Zustand5.xClient state management
Framer MotionlatestSmooth animations
VitestlatestUnit testing

Core Features โ€‹

Automated Check-in Tasks โ€‹

  • Multi-platform Support: V2EX, GitHub, Juejin, CSDN, Bilibili, etc.
  • Cron Scheduling: Flexible cron expressions
  • Priority Queue: Task priority management
  • Manual Trigger: Support instant execution
  • Enable/Disable: Flexible task state control

Data Monitoring & Analytics โ€‹

  • Check-in Records: Complete execution history, success rate statistics
  • Execution Analysis: Duration analysis, error tracking
  • Push Logs: Multi-channel push history, status monitoring
  • Backend Pagination: Element UI style, supports large datasets

Multi-channel Push Notifications โ€‹

  • 12 Push Services: ServerChan, DingTalk, WeCom, Feishu, Telegram, Discord, Bark, etc.
  • Integrated push-all-in-one: Unified push interface
  • Push Testing: Instant configuration verification
  • Default Channel: Flexible notification routing

Complete Permission System โ€‹

  • Supabase RLS: Database-level row-level security
  • Role Management: super_admin / admin / user / guest
  • API Tokens: Fine-grained API access control
  • Audit Logs: Operation tracking

Directory Structure โ€‹

halolight-action/
โ”œโ”€โ”€ app/                    # Next.js 14 App Router
โ”‚   โ”œโ”€โ”€ (auth)/             # Authentication pages
โ”‚   โ”‚   โ”œโ”€โ”€ login/
โ”‚   โ”‚   โ”œโ”€โ”€ register/
โ”‚   โ”‚   โ”œโ”€โ”€ forgot-password/
โ”‚   โ”‚   โ””โ”€โ”€ reset-password/
โ”‚   โ”œโ”€โ”€ (dashboard)/        # Dashboard pages (15 feature pages)
โ”‚   โ”‚   โ”œโ”€โ”€ dashboard/      # Dashboard home
โ”‚   โ”‚   โ”œโ”€โ”€ signin-tasks/   # Check-in task management
โ”‚   โ”‚   โ”œโ”€โ”€ signin-records/ # Check-in records
โ”‚   โ”‚   โ”œโ”€โ”€ push-logs/      # Push logs
โ”‚   โ”‚   โ”œโ”€โ”€ scheduled-tasks/# Scheduled tasks
โ”‚   โ”‚   โ”œโ”€โ”€ notifications/  # Notification center
โ”‚   โ”‚   โ”œโ”€โ”€ data-dictionary/# Data dictionary
โ”‚   โ”‚   โ”œโ”€โ”€ users/          # User management
โ”‚   โ”‚   โ””โ”€โ”€ settings/       # Settings
โ”‚   โ”‚       โ”œโ”€โ”€ profile/
โ”‚   โ”‚       โ”œโ”€โ”€ appearance/
โ”‚   โ”‚       โ”œโ”€โ”€ push-channels/
โ”‚   โ”‚       โ””โ”€โ”€ api-proxy/
โ”‚   โ””โ”€โ”€ api/                # API routes
โ”‚       โ”œโ”€โ”€ cron/           # Cron job execution
โ”‚       โ”œโ”€โ”€ signin/         # Check-in execution
โ”‚       โ””โ”€โ”€ push/test/      # Push testing
โ”œโ”€โ”€ components/             # React components
โ”‚   โ”œโ”€โ”€ ui/                 # shadcn/ui base components
โ”‚   โ”œโ”€โ”€ layout/             # Layout components
โ”‚   โ””โ”€โ”€ auth/               # Auth components
โ”œโ”€โ”€ hooks/                  # React Query Hooks
โ”œโ”€โ”€ lib/                    # Utilities
โ”‚   โ”œโ”€โ”€ supabase/           # Supabase client
โ”‚   โ”œโ”€โ”€ dal/                # Data access layer
โ”‚   โ”œโ”€โ”€ cron/               # Cron executor
โ”‚   โ””โ”€โ”€ push/               # Push service wrapper
โ”œโ”€โ”€ providers/              # Context Providers
โ”œโ”€โ”€ stores/                 # Zustand state management
โ”œโ”€โ”€ types/                  # TypeScript type definitions
โ””โ”€โ”€ supabase/migrations/    # Database migration scripts

Quick Start โ€‹

Requirements โ€‹

  • Node.js >= 24.0.0
  • pnpm >= 10.x
  • Supabase account (required)

Installation โ€‹

bash
# Clone repository
git clone https://github.com/halolight/halolight-action.git
cd halolight-action

# Install dependencies
pnpm install

Environment Variables โ€‹

bash
cat > .env.local <<'EOF'
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
NEXT_PUBLIC_APP_NAME=HaloLight Action
NEXT_PUBLIC_APP_URL=http://localhost:3000
EOF

Supabase Setup โ€‹

  1. Create a project in Supabase Dashboard
  2. Execute supabase/migrations/init.sql in SQL Editor
  3. Copy Project URL and anon public key to .env.local
  4. (Optional) Run pnpm generate:types to generate type definitions

Start Development Server โ€‹

bash
pnpm dev
# Visit http://localhost:3000

Default Test Account โ€‹

  • Email: admin@action.h7ml.cn
  • Password: Admin@123

Database Schema โ€‹

Core Tables โ€‹

TableDescriptionKey Features
signin_tasksCheck-in task configCron scheduling, priority, credentials
signin_recordsCheck-in execution recordsHistory tracking, success rate stats
push_channelsPush channel config12 push services, testing & default channel
push_logsPush execution logsPush history, error tracking
data_dictionaryData dictionary configSystem config, multi-type support
notificationsSystem notificationsUser messages, notification center
cron_jobsCron job configHTTP request scheduling
usersUser infoAuth, role management
user_tokensAPI tokensAccess control, token management

Row Level Security (RLS) โ€‹

  • User Isolation: Users can only access their own data
  • Role Permissions: Admins have higher permissions
  • System Protection: System configs are protected, cannot be deleted
  • Audit Trail: All operations are traceable

Common Commands โ€‹

bash
# Development
pnpm dev                # Start development server
pnpm build              # Production build
pnpm start              # Start production server

# Quality Checks
pnpm lint               # ESLint check
pnpm type-check         # TypeScript type check
pnpm format             # Prettier format
pnpm ci                 # Full CI check

# Testing
pnpm test               # Run tests (watch)
pnpm test:run           # Run tests (once)
pnpm test:coverage      # Test coverage report

# Supabase
pnpm generate:types     # Generate types from Supabase

Deployment โ€‹

One-click deploy:

Deploy with Vercel

Manual Deployment โ€‹

bash
# Build
pnpm build

# Start production server
pnpm start

Vercel Cron Jobs โ€‹

Add in Vercel project settings:

  • Schedule: 0 8 * * * (daily at 8 AM)
  • Path: /api/cron

Security Notes โ€‹

Important Reminders โ€‹

  1. Don't commit secrets:

    • Don't commit .env.local to Git
    • Don't expose Supabase keys in Issues/PRs
    • Don't hardcode sensitive info in code
  2. Use correct keys:

    • Frontend uses anon public key (safe)
    • Frontend should NOT use service_role key (dangerous)
  3. Credential storage:

    • Check-in task credentials should be encrypted
    • Consider Supabase Vault or external key management for production
  4. RLS policies:

    • Regularly review RLS policies
    • Test unauthorized access scenarios
    • Always enable RLS for new tables

Relationship with HaloLight Series โ€‹

ProjectBackendFeatures
halolightMock.jsFrontend demo, no backend needed
halolight-actionSupabaseCheck-in scheduler, real backend
halolight-vueMock.jsVue 3.5 implementation
halolight-angularMock.jsAngular implementation