Initial project setup for a privacy-focused, self-hosted scheduling app: - Go backend with JWT auth, SQLite storage, and chi router - Calendar integrations via Google OAuth (FreeBusy), CalDAV, and ICS links - Public booking pages with configurable slots and booking requests - AES-256-GCM encryption for stored provider tokens - Vue 3 + TypeScript frontend with Vite, Pinia, and Vue Router - Docs, .gitignore, and .env.example for local development
22 lines
915 B
Vue
22 lines
915 B
Vue
<template>
|
|
<svg class="logo" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
<defs>
|
|
<linearGradient id="wp-lg" x1="0" y1="0" x2="1" y2="1">
|
|
<stop offset="0" stop-color="#7db0ff" />
|
|
<stop offset="1" stop-color="#b78cff" />
|
|
</linearGradient>
|
|
</defs>
|
|
<rect x="4.75" y="6.75" width="38.5" height="36.5" rx="10.5" fill="rgba(255,255,255,0.06)" stroke="url(#wp-lg)" stroke-width="2.2" />
|
|
<path d="M5 16h38" stroke="url(#wp-lg)" stroke-width="2.2" opacity="0.7" />
|
|
<path d="M15 3.5v6M33 3.5v6" stroke="url(#wp-lg)" stroke-width="3" stroke-linecap="round" />
|
|
<path d="M15 27l6.5 6.5L33.5 21" stroke="url(#wp-lg)" stroke-width="3.6" stroke-linecap="round" stroke-linejoin="round" />
|
|
</svg>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.logo {
|
|
width: 34px;
|
|
height: 34px;
|
|
filter: drop-shadow(0 4px 14px rgba(125, 176, 255, 0.35));
|
|
}
|
|
</style>
|