AshKyd/tootcast

★ 0Forks 0SvelteGitHub ↗Compare

README

sv

Everything you need to build a Svelte project, powered by sv.

Creating a project

If you're seeing this, you've probably already done this step. Congrats!

# create a new project
npx sv create my-app

To recreate this project with the same configuration:

# recreate this project
npx [email protected] create --template minimal --types ts --add prettier eslint storybook --install npm tootcast

Developing

Once you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:

npm run dev

# or start the server and open the app in a new browser tab
npm run dev -- --open

Deployment

TootCast is configured for static hosting using Docker and Traefik. It uses the SvelteKit static adapter in SPA mode.

Local Development

npm run dev

Production Build (Docker)

Ensure you have Docker and Docker Compose installed.

docker compose up --build -d

The application is configured to run at tootcast.kyd.au with Traefik handling TLS via Let's Encrypt.

Building

To create a production version of your app:

npm run build

You can preview the production build with npm run preview.

To deploy your app, you may need to install an adapter for your target environment.

Component Index

RecordButton

A bespoke glassmorphism recording button.

  • Variants: default.
  • States: recording, hover, active.
  • Function: Handles "Hold to Record" interaction with tactile visual feedback and pulsing animations. Remains custom to preserve its unique high-end aesthetic.

Waveform

A full-screen symmetric waveform visualization.

  • Function: Renders frequency data from an AnalyserNode onto a full-screen canvas during recording. Provides high-performance, fluid visual feedback.

Scrim

A semi-transparent, blurring backdrop.

  • Function: Focuses user attention by dimming and blurring the background UI when recording starts.

InstanceSelector

The Mastodon instance entry screen, built with svelte-akui.

  • Components: Field, TextInput, Button, InputGroup.
  • Function: Allows users to enter their instance URL and initiates the OAuth flow. Now uses the shared design system for a more integrated feel.

Contributors

AshKyd

Issues