git clone https://github.com/virgilvox/quirc.git
cd quirc
npm install
cp .env.example .env
npm run devOpen http://localhost:5173 in your browser.
See ARCHITECTURE.md for a full technical reference.
- App.vue — root component, initializes everything
- useIRC.js — IRC event handlers (where most logic lives)
- irc/client.js — WebSocket IRC client
- styles/variables.css — all CSS custom properties
- Add the command case in
src/irc/commands.js→parseSlashCommand() - Add the handler in
src/composables/useIRC.js→sendInput() - Add help text to
COMMAND_HELParray - Add metadata to
COMMANDSarray for the command palette
- Add a
ref()insrc/stores/settings.js - Add it to the
persist()JSON object - Add it to the
allRefsarray for auto-persist - Add the return export
- Add UI in
src/components/overlays/SettingsPanel.vue
- Create
src/components/icons/IconName.vuewith SVG template - Follow conventions:
sizeandcolorprops, stroke-based,stroke-width="2",stroke-linecap="square" - Export from
src/components/icons/index.js
All colors must use CSS custom properties from variables.css. Never use hardcoded hex colors in component styles. Use semantic variables:
--q-text-brightinstead of#fff--q-text-on-accentinstead of#000(for text on accent-colored backgrounds)--q-backdropinstead ofrgba(0, 0, 0, 0.85)
- Vue 3 Composition API with
<script setup> - BEM-style CSS with scoped styles and
--q-*variables - No border-radius — enforced globally
- Space Mono monospace font everywhere
- Keep components focused — one responsibility per component
- Prefer CSS custom properties over inline styles
npm run build # Production build → dist/
npm run preview # Preview production build locallyQUIRC deploys to Netlify. See SELF-HOSTING.md for full deployment instructions.