feat(frontend): enhance API credentials system and build configuration

Add real API support in demo mode with credential checking, implement build-time version injection from package.json, and refactor update checking with 24-hour caching. Migrate landing page from Vue to Astro with comprehensive UI components including Hero, Features, Benefits, and Tech Stack sections. Update CI/CD workflow with expanded cache paths and security scanner version pinned.
This commit is contained in:
Tomas Dvorak
2026-02-10 16:25:57 +01:00
parent d27cf14110
commit b083dac3f0
95 changed files with 17610 additions and 2692 deletions
+365 -45
View File
@@ -2,10 +2,250 @@
## Project Overview
**Domain**: trackeep.org
**Tech Stack**: Vue 3 + TypeScript + Vite + UnoCSS
**Demo Domain**: demo.trackeep.org
**Tech Stack**: Astro + TypeScript + Vite + Bun + TailwindCSS
**Design System**: Papra-inspired clean UI with Inter font, custom color palette
**Theme**: Dark mode support, no gradients, clean SaaS/PaaS aesthetic
## UI Design System & Visual Plan
### Design Inspiration Analysis
Based on analysis of reference sites and existing Trackeep assets:
**Papra Design System** (from papra.html/css):
- Clean, minimalist aesthetic with subtle grid backgrounds
- Dark/light theme support with proper contrast
- Rounded corners (0.5rem radius)
- Sophisticated color palette with HSL values
- Icon-based visual elements using Tabler icons
- Card-based layouts with subtle borders
**Glance App**:
- Dashboard-focused widget approach
- Clean typography and spacing
- Mobile-first responsive design
- Subtle animations and transitions
**Maybe.co**:
- Professional finance app aesthetic
- Clean data visualization
- Trustworthy color scheme
- Clear CTAs and navigation
**n8n.io**:
- Technical workflow focus
- Modern developer-friendly design
- Strong visual hierarchy
- Interactive elements
**Immich.app**:
- Photo management focus
- Clean media presentation
- Strong brand colors
- Mobile app integration
**Umami.is**:
- Analytics dashboard aesthetic
- Clean data presentation
- Privacy-focused messaging
- Open source emphasis
### Enhanced Color Palette
```css
:root {
/* Light Mode */
--background: 250 250 250; /* #fafafa */
--foreground: 15 23 42; /* #0f172a */
--card: 255 255 255; /* #ffffff */
--card-foreground: 15 23 42; /* #0f172a */
--popover: 255 255 255; /* #ffffff */
--popover-foreground: 15 23 42; /* #0f172a */
--primary: 91 196 242; /* #5BC4F2 - Trackeep brand blue */
--primary-foreground: 0 0 0; /* #000000 */
--secondary: 241 245 249; /* #f1f5f9 */
--secondary-foreground: 71 85 105; /* #475569 */
--muted: 241 245 249; /* #f1f5f9 */
--muted-foreground: 100 116 139; /* #64748b */
--accent: 241 245 249; /* #f1f5f9 */
--accent-foreground: 71 85 105; /* #475569 */
--destructive: 0 84.2% 60.2%; /* #ef4444 */
--destructive-foreground: 0 0% 98%; /* #fafafa */
--border: 226 232 240; /* #e2e8f0 */
--input: 226 232 240; /* #e2e8f0 */
--ring: 217 70.2% 91.2%; /* #dbeafe */
--radius: 0.5rem;
/* Custom Trackeep Colors */
--trackeep-blue: 91 196 242; /* #5BC4F2 */
--trackeep-blue-dark: 14 165 233; /* #0ea5e9 */
--trackeep-green: 34 197 94; /* #22c55e */
--trackeep-orange: 251 146 60; /* #fb923c */
--trackeep-purple: 168 85 247; /* #a855f7 */
}
[data-kb-theme="dark"] {
/* Dark Mode */
--background: 26 26 26; /* #1a1a1a */
--foreground: 250 250 250; /* #fafafa */
--card: 32 32 32; /* #202020 */
--card-foreground: 250 250 250; /* #fafafa */
--popover: 32 32 32; /* #202020 */
--popover-foreground: 250 250 250; /* #fafafa */
--primary-foreground: 250 250 250; /* #fafafa */
--secondary: 39 39 42; /* #27272a */
--secondary-foreground: 250 250 250; /* #fafafa */
--muted: 39 39 42; /* #27272a */
--muted-foreground: 163 163 163; /* #a3a3a3 */
--accent: 39 39 42; /* #27272a */
--accent-foreground: 250 250 250; /* #fafafa */
--destructive: 0 62.8% 30.6%; /* #dc2626 */
--destructive-foreground: 250 250 250; /* #fafafa */
--border: 39 39 42; /* #27272a */
--input: 39 39 42; /* #27272a */
--ring: 217 70.2% 91.2%; /* #dbeafe */
}
```
### Typography System
**Font Family**: Inter (from existing Trackeep fonts.css)
- **Weights**: 300 (Light), 400 (Regular), 500 (Medium), 600 (Semibold), 700 (Bold)
- **Sizes**:
- xs: 0.75rem (12px)
- sm: 0.875rem (14px)
- base: 1rem (16px)
- lg: 1.125rem (18px)
- xl: 1.25rem (20px)
- 2xl: 1.5rem (24px)
- 3xl: 1.875rem (30px)
- 4xl: 2.25rem (36px)
- 5xl: 3rem (48px)
- 6xl: 3.75rem (60px)
**Line Heights**:
- tight: 1.25
- normal: 1.5
- relaxed: 1.75
### Component Design System
#### 1. Navigation Bar
**Inspiration**: Papra + Maybe.co
- **Style**: Floating glassmorphism effect with backdrop blur
- **Layout**: Logo left, menu center, theme toggle + social links right
- **Mobile**: Hamburger menu with slide-out drawer
- **Elements**:
- Logo with hover animation (rotate effect like Papra)
- Active state indicators
- Smooth transitions (200ms cubic-bezier)
#### 2. Hero Section
**Inspiration**: Papra + Immich + n8n
- **Background**: Subtle grid pattern with gradient overlay
- **Layout**: Split layout (text left, visual right) on desktop
- **Elements**:
- Animated gradient blob background
- Typography hierarchy: H1 (4xl/5xl), Subtitle (xl), CTAs
- Interactive install command box
- Feature highlights with icons
#### 3. Quick Install Component
**Inspiration**: Papra's code blocks + Glance's widgets
- **Style**: Dark terminal-style box with syntax highlighting
- **Features**:
- One-click copy with success feedback
- Command: `curl -sSL https://trackeep.org/install.sh | sh`
- Animated typing effect
- Social proof buttons (GitHub, Discord)
#### 4. Feature Cards
**Inspiration**: Papra's card system + n8n's workflow cards
- **Style**: Elevated cards with subtle borders
- **Layout**: 2-3 column grid with responsive adjustments
- **Elements**:
- Icon + title + description structure
- Hover effects (scale, shadow)
- Gradient overlays for visual interest
- Micro-animations on scroll
#### 5. Documentation Section
**Inspiration**: Umami's clean docs + Maybe's professional layout
- **Style**: Tabbed interface with search
- **Features**:
- Full-text search across docs
- Syntax-highlighted code blocks
- Responsive table of contents
- Dark/light theme support
#### 6. Demo Section
**Inspiration**: Immich's app showcase + n8n's interactive demos
- **Style**: Interactive iframe or screenshot carousel
- **Features**:
- Live preview at demo.trackeep.org
- Feature tour tooltips
- Responsive device mockups
- Performance metrics
### Visual Effects & Animations
#### Micro-interactions
- **Button hover**: Scale (1.05) + shadow + translateY(-2px)
- **Card hover**: Border color change + subtle shadow
- **Icon animations**: Rotate, scale, color transitions
- **Scroll animations**: Fade-in, slide-up effects
#### Background Effects
- **Grid pattern**: Subtle 24px grid (like Papra)
- **Gradient blobs**: Animated color gradients
- **Particle effects**: Optional subtle floating elements
#### Loading States
- **Skeleton loaders**: For dynamic content
- **Progress indicators**: For install process
- **Spinners**: Minimal, on-brand
### Responsive Design Strategy
#### Breakpoints
- **Mobile**: < 640px (sm)
- **Tablet**: 640px - 1024px (md)
- **Desktop**: 1024px - 1280px (lg)
- **Large Desktop**: > 1280px (xl)
#### Mobile Adaptations
- **Navigation**: Bottom sheet menu
- **Hero**: Stacked layout with full-width elements
- **Features**: Single column with larger touch targets
- **Install command**: Horizontal scroll with copy button
### Accessibility Considerations
- **WCAG 2.1 AA compliance**
- **Keyboard navigation**: All interactive elements
- **Screen reader**: Proper ARIA labels
- **Color contrast**: 4.5:1 minimum
- **Focus indicators**: Visible, consistent
- **Reduced motion**: Respect prefers-reduced-motion
### Performance Optimization
- **Images**: WebP format, lazy loading
- **Fonts**: Preload critical fonts, font-display: swap
- **JavaScript**: Minimal client-side JS (Astro islands)
- **CSS**: Critical CSS inlined, non-critical deferred
- **Animations**: CSS transforms (GPU accelerated)
### Brand Integration
- **Logo**: Consistent with existing Trackeep branding
- **Colors**: #5BC4F2 primary blue maintained
- **Typography**: Inter font from existing system
- **Iconography**: Tabler icons (consistent with Papra)
- **Voice**: Professional but approachable
### Content Strategy
- **Headlines**: Benefit-focused, action-oriented
- **Body text**: Clear, concise, scannable
- **CTAs**: Strong verbs, clear outcomes
- **Social proof**: GitHub stars, user testimonials
- **Technical credibility**: Stack logos, architecture diagrams
## Design System Reference
### Colors (from existing project)
@@ -21,10 +261,38 @@
- **Sizes**: xs(0.75rem), sm(0.875rem), base(1rem), lg(1.125rem), xl(1.25rem), 2xl(1.5rem), 3xl(1.875rem), 4xl(2.25rem), 6xl(3.75rem)
### Components (reuse from project)
- Papra button variants (`btn-primary`, `btn-secondary`, `btn-outline`)
- Card styles (`card-papra`)
- Navigation items (`nav-item-papra`)
- Transitions (`transition-papra`)
- **Papra Button Variants**: `btn-primary`, `btn-secondary`, `btn-outline`
- **Card Styles**: `card-papra` with elevated borders and hover effects
- **Navigation Items**: `nav-item-papra` with active states
- **Transitions**: `transition-papra` with cubic-bezier easing
- **Grid Backgrounds**: Subtle 24px/48px grid patterns
- **Icon System**: Tabler icons with consistent sizing
### Project Documentation Integration
- **API Documentation**: Embedded from `docs/API.md` with syntax highlighting
- **Development Guide**: From `docs/DEVELOPMENT.md` with setup instructions
- **AI Features**: From `docs/AI_ASSISTANT.md` showcasing capabilities
- **Deployment Guide**: From `docs/DEPLOYMENT.md` with Docker instructions
- **Activity Rectangles**: From `docs/ACTIVITY_RECTANGLES_IMPLEMENTED.md` showing feature details
### Visual Asset Library
**Existing Images** (from landing folder):
- `image.png`, `image copy.png`, `image copy 2.png`, `image copy 3.png`
- **Usage**: Hero section, feature illustrations, demo screenshots
- **Style**: Clean, minimalist, dark mode compatible
- **Optimization**: WebP format, responsive loading
### Icon Library
**Source**: Tabler Icons (consistent with Papra)
- **Categories**: Interface, brands, file types, actions
- **Style**: Outline, consistent stroke width
- **Integration**: CSS mask-based for color theming
- **Examples**:
- `i-tabler-file-text` (documents)
- `i-tabler-search` (search features)
- `i-tabler-code` (developer tools)
- `i-tabler-shield-lock` (security)
- `i-tabler-brand-github` (social links)
## Landing Page Structure
@@ -53,11 +321,14 @@
- Starts all services
- Provides next steps and access URLs
- **Social Proof Buttons**: GitHub and Discord links below the command
- **Demo Mode**: Direct link to `demo.trackeep.org` for instant preview
**Content Ideas**:
- Headline: "Your Self-Hosted Productivity & Knowledge Hub"
- Subheading: "Track, save, and organize everything that matters to you - all in one place, under your control"
- CTA: "Get Started" or "View Demo"
- Primary CTA: "Try Demo" (links to demo.trackeep.org)
- Secondary CTA: "Get Started" (install command)
- Tertiary CTA: "View Documentation" (links to docs)
### 2. Features Section
**Purpose**: Showcase core capabilities
@@ -94,12 +365,24 @@
**Purpose**: Build credibility with developers
**Technologies**:
- **Frontend**: SolidJS, TypeScript, UnoCSS
- **Frontend**: Astro, TypeScript, TailwindCSS
- **Backend**: Go, PostgreSQL
- **Mobile**: React Native
- **Package Manager**: Bun
- **Build Tool**: Vite
- **DevOps**: Docker, GitHub Actions
### 6. Pricing Section (if applicable)
### 6. Documentation Section
**Purpose**: Comprehensive project documentation
**Sections**:
- **API Reference**: Complete API documentation
- **Development Guide**: Setup and contribution guidelines
- **AI Features**: AI integration documentation
- **Deployment Guide**: Production deployment instructions
- **Activity Rectangles**: Feature implementation details
### 7. Pricing Section (if applicable)
**Purpose**: Clear pricing information
**Options**:
@@ -107,22 +390,32 @@
- **Premium**: Optional support/features
- **Enterprise**: Custom solutions
### 7. Testimonials Section
### 8. Demo Section
**Purpose**: Interactive demonstration
**Features**:
- **Live Demo**: Link to demo.trackeep.org
- **Demo Credentials**: Pre-configured access
- **Feature Tour**: Guided walkthrough
- **Interactive Elements**: Try core features
### 9. Testimonials Section
**Purpose**: Social proof
**Layout**: Carousel or grid of user quotes
### 8. Call-to-Action Section
### 10. Call-to-Action Section
**Purpose**: Final conversion opportunity
**Content**: Strong CTA with benefits summary
### 9. Footer
### 11. Footer
**Purpose**: Navigation and legal information
**Links**:
- Documentation
- Documentation (integrated docs)
- GitHub
- Demo (demo.trackeep.org)
- Privacy Policy
- Terms of Service
- Contact
@@ -134,18 +427,29 @@
landing/
├── src/
│ ├── components/
│ │ ├── HeroSection.vue
│ │ ├── Navigation.vue
│ │ ├── FeatureCard.vue
│ │ ├── Footer.vue
│ │ ├── QuickInstall.vue
│ │ ├── HeroSection.astro
│ │ ├── Navigation.astro
│ │ ├── FeatureCard.astro
│ │ ├── Footer.astro
│ │ ├── QuickInstall.astro
│ │ ├── Documentation.astro
│ │ └── ui/
│ │ ├── Button.vue
│ │ ├── Card.vue
│ │ └── Container.vue
│ ├── composables/
│ │ ── useTheme.ts
│ └── useScroll.ts
│ │ ├── Button.astro
│ │ ├── Card.astro
│ │ └── Container.astro
│ ├── layouts/
│ │ ── Layout.astro
├── pages/
│ │ ├── index.astro
│ │ ├── docs/
│ │ │ ├── api.astro
│ │ │ ├── development.astro
│ │ │ ├── ai-features.astro
│ │ │ ├── deployment.astro
│ │ │ └── activity-rectangles.astro
│ │ └── demo.astro
│ ├── content/
│ │ └── docs/ # Markdown content for docs
│ ├── assets/
│ │ ├── images/
│ │ │ ├── hero-placeholder.png
@@ -154,15 +458,18 @@ landing/
│ │ │ └── feature-3.png
│ │ └── styles/
│ │ └── main.css
│ ├── App.vue
│ ├── main.ts
│ └── router.ts
│ ├── utils/
│ ├── theme.ts
│ └── scroll.ts
│ └── env.d.ts
├── public/
│ ├── favicon.ico
── trackeep-logo.svg
── trackeep-logo.svg
│ └── install.sh
├── package.json
├── vite.config.ts
├── uno.config.ts
├── astro.config.mjs
├── tailwind.config.mjs
├── bun.lockb
└── tsconfig.json
```
@@ -192,10 +499,14 @@ landing/
- Hover effects
- Consistent spacing
#### Container Component
- Max-width wrapper
- Responsive padding
- Center alignment
#### Documentation Component
- **API Reference**: Embedded from `docs/API.md`
- **Development Guide**: From `docs/DEVELOPMENT.md`
- **AI Features**: From `docs/AI_ASSISTANT.md`
- **Deployment Guide**: From `docs/DEPLOYMENT.md`
- **Activity Rectangles**: From `docs/ACTIVITY_RECTANGLES_IMPLEMENTED.md`
- **Searchable**: Full-text search across docs
- **Theme-aware**: Dark/light mode support
### Responsive Design
- **Mobile**: Single column, stacked layout
@@ -203,10 +514,12 @@ landing/
- **Desktop**: Full multi-column experience
### Performance Considerations
- Lazy load images
- Optimize fonts (Inter from existing CDN)
- Minimize JavaScript bundle
- Use CSS-in-JS for styling
- **Astro Islands**: Minimal client-side JavaScript
- **Lazy load images**: Optimized loading
- **Optimize fonts**: Inter from existing CDN
- **Bun runtime**: Fast package management and building
- **Vite bundling**: Optimized production builds
- **Static generation**: SEO-optimized pre-rendering
### SEO Optimization
- Semantic HTML5 structure
@@ -246,16 +559,19 @@ landing/
## Development Phases
### Phase 1: Foundation (Week 1)
- Set up Vue + Vite + UnoCSS
- Set up Astro + Vite + TailwindCSS + Bun
- Create basic layout structure
- Implement navigation and footer
- Add theme switching
- **Create QuickInstall component with curl command**
- **Set up documentation integration**
### Phase 2: Content Sections (Week 2)
- Build hero section with install command
- Add features grid
- Create benefits section
- **Integrate project documentation**
- **Add demo section with demo.trackeep.org link**
- Implement responsive design
### Phase 3: Polish (Week 3)
@@ -267,10 +583,12 @@ landing/
### Phase 4: Launch (Week 4)
- Final content review
- Domain setup
- Domain setup (trackeep.org)
- **Configure demo.trackeep.org**
- Analytics integration
- Performance monitoring
- **Deploy install script to trackeep.org/install.sh**
- **Set up documentation routing**
## Success Metrics
- **Page Load Speed**: < 2 seconds
@@ -280,14 +598,16 @@ landing/
## Next Steps
1. Approve this plan and structure
2. Set up the Vue project with dependencies
2. Set up the Astro project with Bun dependencies
3. Create the basic component library
4. **Build QuickInstall component with curl command**
5. Start building sections from top to bottom
6. Integrate with existing design system
7. Add real content and images
8. **Create and deploy the install.sh script**
9. Test and optimize for production
5. **Integrate project documentation from docs/**
6. Start building sections from top to bottom
7. **Add demo.trackeep.org configuration**
8. Integrate with existing design system
9. Add real content and images
10. **Create and deploy the install.sh script**
11. Test and optimize for production
## Install Script Implementation