A modern web application showcasing sunnypilot features and providing information about the open-source driving assistance software. Built with SvelteKit, TypeScript, and Tailwind CSS.
- Interactive Dashboard: Mock driving statistics and engagement metrics
- Feature Showcase: Highlights of key sunnypilot features (DEC, MADS, FCR)
- Branch Information: Detailed explanations of Release, Staging, and Dev branches
- FAQ Section: Common questions and community resources
- Responsive Design: Mobile-first approach with DaisyUI components
- Authentication: Integrated with Logto for user management
- Theme Toggle: Support for light/dark mode switching
- Framework: SvelteKit 2.x with TypeScript
- Styling: Tailwind CSS 4.0 + DaisyUI 5.0
- Authentication: Logto SvelteKit integration
- Testing: Vitest + Playwright for E2E testing
- Build: Vite 6.0
- Deployment: Fly.io with Docker
- Package Manager: pnpm
- Node.js 22.x or higher
- pnpm package manager
- Clone the repository:
git clone https://github.com/your-username/sunnylink.git
cd sunnylink
- Install dependencies:
pnpm install
- Copy environment configuration:
cp .env.example .env
- Update environment variables in
.env
:
PUBLIC_API_URL=https://stg.api.sunnypilot.ai/
PUBLIC_LOGTO_ENDPOINT=https://logto.sunnypilot.ai/
PUBLIC_LOGTO_APP_ID=your-app-id
PUBLIC_CALLBACK=http://localhost:5173/sunnylink-svelte/callback
PUBLIC_REDIRECT=http://localhost:5173/
Start the development server:
pnpm dev
The application will be available at http://localhost:5173/sunnylink-svelte/
pnpm dev
- Start development serverpnpm build
- Build for productionpnpm preview
- Preview production buildpnpm check
- Run TypeScript and Svelte checkspnpm lint
- Run linting and formatting checkspnpm format
- Format code with Prettierpnpm test
- Run all testspnpm test:unit
- Run unit tests with Vitestpnpm test:e2e
- Run end-to-end tests with Playwright
src/
├── lib/
│ ├── api/ # API client and authentication
│ ├── components/ # Reusable Svelte components
│ ├── images/ # Static images and assets
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utility functions
├── routes/
│ ├── +layout.svelte # Root layout
│ ├── +page.svelte # Homepage
│ ├── callback/ # Auth callback route
│ └── dashboard/ # Protected dashboard area
└── app.html # HTML template
The application uses Logto for authentication with the following flow:
- Users authenticate via Logto
- Callback handles the authentication response
- Protected routes require valid session
- Dashboard area shows user-specific content
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
This project is private and proprietary to the sunnypilot organization.
- sunnypilot - The main sunnypilot driving assistance software
- sunnypilot Discord - Community support and discussions
For support and community discussions, join the sunnypilot Discord server.