# Lapikud External Website ![Built with Vue](https://img.shields.io/badge/Vue-3-42B883?logo=vuedotjs&logoColor=white) ![Built with Vite](https://img.shields.io/badge/Vite-646CFF?logo=vite&logoColor=white) ![Deployed on GitHub Pages](https://img.shields.io/badge/Deployed-GitHub%20Pages-222?logo=github) Welcome! This is the public-facing website for Lapikud. It's a learning project. If something breaks, that's totally fine. You just get to learn more about git. Materials and design files are on **Google Drive β†’ Lapikud β†’ Tarkvara β†’ VΓ€liveeb** --- ## πŸ™‹ How to help You don't need to write code to contribute! ### Option 1 β€” Report something Found a bug, typo, or something missing? [Open an issue](https://github.com/Lapikud/lapikud.github.io/issues) and describe what's wrong. That's already super helpful. ### Option 2 β€” Fix something yourself 1. **Fork** this repo (button in the top right on GitHub β€” it copies the project to your account) 2. Make your changes 3. Open a **pull request** back to this repo --- ## πŸ› οΈ Setting up your dev environment ### What you need first - [Node.js](https://nodejs.org/) β€” v20.19 or higher; use the current **LTS version** when possible > Node.js comes with `npm` included, so you don't need to install that separately. --- ### Don't have a code editor yet? If you don't have a preferred code editor, [VSCode](https://code.visualstudio.com/) is a solid choice. Download and install it, and you're good to go. --- ### Windows? Set up WSL first (recommended) WSL lets you run Linux commands on Windows, which makes everything smoother.
πŸ“‹ WSL setup steps **Step 1** β€” Enable WSL. Run these two commands in PowerShell as Administrator (this enables the necessary Windows features): ```bash dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ``` **Step 2** β€” Set WSL to version 2 (the better one): ```bash wsl --set-default-version 2 ``` **Step 3** β€” Install [Ubuntu from the Microsoft Store](https://apps.microsoft.com/store/detail/ubuntu/9NBLGGH4MSV6) > ⚠️ If WSL doesn't work, check that **Virtualization** is enabled on your machine: open Task Manager β†’ Performance tab β†’ look for "Virtualization: Enabled"
--- ### Installation **1. Clone the repo** β€” this downloads the project to your computer: ```bash git clone https://github.com/Lapikud/lapikud.github.io.git cd lapikud.github.io ``` **2. Install dependencies** β€” this installs the exact package versions recorded by the project: ```bash npm ci ``` **3. Optimise images** β€” the optimised image variants are not stored in the repo, so you need to generate them locally before running the site: ```bash npm run optimise ``` > You only need to run this once after cloning, and again whenever you add or change images in any `original/` folder. **4. Start the dev server** β€” this runs the site locally so you can see your changes live: ```bash npm run dev ``` Then open the URL it gives you (usually `http://localhost:5173`) in your browser. πŸŽ‰ --- ## 🧭 How the project fits together The site is a Vue 3 single-page application built with Vite. Vue starts in `src/main.js`, which mounts `src/App.vue`. The app keeps its intentionally small custom router and translation system rather than introducing larger framework plugins. - `src/routes/` contains the page components and the bilingual public route table. - `src/components/` contains reusable UI building blocks; layout primitives live in `src/components/layout/`. - `src/layout/` contains the site-wide navigation and footer. - `src/lib/` contains routing, translations, image-path helpers, and the shared YAML loader. - `src/lib/locales/{est,en}/` contains escaped JSON translation data for each language. - `public/_data/` contains editable YAML for members, mentors, workshops, projects, partners, and pricing. - `public/assets/` contains source assets; generated image variants remain ignored. - `.storybook/` and `src/stories/` provide isolated Vue component previews. Page components use Vue's `