A modern, responsive website for the ExplainShot screenshot annotation tool, built with Vue.js 3, TypeScript, and Vite.
- Modern Vue 3: Built with Composition API and TypeScript
- Responsive Design: Mobile-first approach with clean, modern UI
- Dark/Light Theme: Toggle between themes with user preference persistence
- Smooth Animations: AOS (Animate On Scroll) integration for engaging user experience
- SEO Optimized: Proper meta tags, Open Graph, and Twitter card support
- Accessibility: WCAG compliant with keyboard navigation and screen reader support
- Performance: Optimized build with Vite for fast loading times
explainshot-site/
βββ public/ # Static assets
βββ src/
β βββ assets/ # Styles and images
β β βββ styles.css # Global CSS with theme variables
β βββ components/ # Reusable Vue components
β β βββ NavBar.vue # Navigation component
β βββ router/ # Vue Router configuration
β β βββ index.ts # Routes definition
β βββ stores/ # Pinia state management
β β βββ theme.ts # Theme management store
β βββ views/ # Page components
β β βββ Main.vue # Home page
β β βββ Help.vue # Documentation page
β β βββ Support.vue # Support and community page
β βββ App.vue # Root component
β βββ main.ts # Application entry point
βββ index.html # HTML template
βββ package.json # Dependencies and scripts
βββ tsconfig.json # TypeScript configuration
βββ vite.config.ts # Vite configuration
- Node.js 20.19+ or 22.12+ (recommended)
- npm or yarn package manager
-
Navigate to the project directory:
cd explainshot-website/website/explainshot-site -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and navigate to
http://localhost:5173
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run type-check- Run TypeScript type checkingnpm run lint- Run ESLintnpm run format- Format code with Prettier
The website supports both light and dark themes with automatic system preference detection:
- CSS Variables: All colors and styles use CSS custom properties
- Automatic Detection: Respects user's system theme preference
- Persistent Storage: Theme choice is saved in localStorage
- Smooth Transitions: Animated theme switching
Edit the CSS variables in src/assets/styles.css:
:root {
--color-primary: #3b82f6;
--color-background: #ffffff;
/* ... more variables */
}
:root.dark {
--color-primary: #60a5fa;
--color-background: #0f172a;
/* ... dark theme variables */
}The website is fully responsive with breakpoints:
- Mobile:
< 480px - Tablet:
481px - 768px - Desktop:
> 768px
To enable privacy-friendly analytics, uncomment and configure the script in index.html:
<!-- Plausible Analytics Example -->
<script defer data-domain="yourdomain.com" src="https://plausible.io/js/script.js"></script>Update the meta tags in index.html with your actual domain and content.
Update the external links in the view components:
- GitHub repository links
- Email addresses
- Social media profiles
- Download links
npm run buildThe dist folder will contain the built files ready for deployment.
The built website can be deployed to any static hosting service:
- GitHub Pages: Use GitHub Actions for automatic deployment
- Vercel: Connect your repository for zero-config deployment
- Netlify: Drag and drop the
distfolder or use Git integration - CloudFlare Pages: Git-based deployment with edge optimization
- Chrome/Edge: Last 2 versions
- Firefox: Last 2 versions
- Safari: Last 2 versions
- Mobile browsers: iOS Safari 12+, Chrome Android 90+
- Create a new Vue component in
src/views/ - Add the route in
src/router/index.ts - Update navigation in
src/components/NavBar.vue
- Main Page: Edit
src/views/Main.vue - Help Documentation: Edit
src/views/Help.vue - Support Information: Edit
src/views/Support.vue
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes
- Run tests:
npm run lint && npm run type-check - Commit changes:
git commit -m 'Add some feature' - Push to branch:
git push origin feature/your-feature - Submit a pull request
This project is licensed under the MIT License.
- Vue.js - Progressive JavaScript framework
- Vite - Fast build tool
- AOS - Animate on scroll library
- Inter Font - Beautiful typography
Built with β€οΈ for the ExplainShot community