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 โ
| Technology | Version | Description |
|---|---|---|
| Next.js | 14.2 | App Router architecture |
| TypeScript | 5.7 | Type safety |
| Supabase | latest | PostgreSQL + Auth + RLS |
| Tailwind CSS | 3.4 | Utility-first CSS |
| shadcn/ui | latest | Radix UI component library |
| TanStack Query | 5.x | Server state management |
| Zustand | 5.x | Client state management |
| Framer Motion | latest | Smooth animations |
| Vitest | latest | Unit 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 scriptsQuick 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 installEnvironment 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
EOFSupabase Setup โ
- Create a project in Supabase Dashboard
- Execute
supabase/migrations/init.sqlin SQL Editor - Copy Project URL and anon public key to
.env.local - (Optional) Run
pnpm generate:typesto generate type definitions
Start Development Server โ
bash
pnpm dev
# Visit http://localhost:3000Default Test Account โ
- Email:
admin@action.h7ml.cn - Password:
Admin@123
Database Schema โ
Core Tables โ
| Table | Description | Key Features |
|---|---|---|
| signin_tasks | Check-in task config | Cron scheduling, priority, credentials |
| signin_records | Check-in execution records | History tracking, success rate stats |
| push_channels | Push channel config | 12 push services, testing & default channel |
| push_logs | Push execution logs | Push history, error tracking |
| data_dictionary | Data dictionary config | System config, multi-type support |
| notifications | System notifications | User messages, notification center |
| cron_jobs | Cron job config | HTTP request scheduling |
| users | User info | Auth, role management |
| user_tokens | API tokens | Access 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 SupabaseDeployment โ
Vercel (Recommended) โ
One-click deploy:
Manual Deployment โ
bash
# Build
pnpm build
# Start production server
pnpm startVercel Cron Jobs โ
Add in Vercel project settings:
- Schedule:
0 8 * * *(daily at 8 AM) - Path:
/api/cron
Security Notes โ
Important Reminders โ
Don't commit secrets:
- Don't commit
.env.localto Git - Don't expose Supabase keys in Issues/PRs
- Don't hardcode sensitive info in code
- Don't commit
Use correct keys:
- Frontend uses
anon public key(safe) - Frontend should NOT use
service_role key(dangerous)
- Frontend uses
Credential storage:
- Check-in task credentials should be encrypted
- Consider Supabase Vault or external key management for production
RLS policies:
- Regularly review RLS policies
- Test unauthorized access scenarios
- Always enable RLS for new tables
Relationship with HaloLight Series โ
| Project | Backend | Features |
|---|---|---|
| halolight | Mock.js | Frontend demo, no backend needed |
| halolight-action | Supabase | Check-in scheduler, real backend |
| halolight-vue | Mock.js | Vue 3.5 implementation |
| halolight-angular | Mock.js | Angular implementation |
Related Projects โ
- halolight - Next.js 14 reference implementation
- halolight-vue - Vue 3.5 implementation
- halolight-angular - Angular implementation
- docs - Documentation