122 Commits

Author SHA1 Message Date
2060a76e0f feat: Migrate more to VueV3 logic, navbar improvements 2026-07-11 22:33:24 +03:00
8b43a8438d Merge pull request #166 from topsinoty/master
Create Vue version of v2 [NEED REVIEW - Read description]
2026-07-06 03:27:58 +03:00
Promise Temitope
a67911a39e Merge pull request #2 from topsinoty/refactor/move-to-vue
Refactor/move to vue
2026-07-04 17:14:51 +03:00
topsinoty
ef6abf9c28 merge(master): conclude the documented Vue reconciliation
Record master as fully integrated after replaying its mentor, member, board, history, portfolio, partner, homepage, student, portrait, and asset changes as focused commits.\n\nKeep the deployed Vue/Vite tree while preserving master’s relative data and asset structure beneath public. Refactor-only records remain archived as inactive data, and retired Jekyll files, shell converters, and generated image outputs remain excluded because the active build does not consume them.\n\nThe resolution process and path mapping are documented in docs/merge-master-2026-07.md.
2026-07-04 17:14:12 +03:00
topsinoty
cd3ebf6faf docs(merge): record the master reconciliation
Document the path mapping, chronological content replay, inactive-record preservation, omitted legacy Jekyll pipeline, and verification checklist. The note explains why master’s structure is retained beneath public where Vite can actually serve it.
2026-07-04 17:12:12 +03:00
topsinoty
5ba944f074 fix(management): port master’s portrait sizing
Apply master’s fixed 150px current-board portrait size and centered mobile alignment in the Vue component. This preserves the stylesheet intent without restoring the retired Jekyll Sass tree.
2026-07-04 17:11:20 +03:00
topsinoty
1f72edb778 content(home): restore master’s exact introduction
Replace the paraphrased Estonian activity and inclusion copy with master’s exact wording. Keep the Vue homepage structure, calls to action, images, and English locale intact.
2026-07-04 17:10:42 +03:00
topsinoty
f7012132b4 feat(student): render preserved links and mentor guidance
Render the structured external project links with safe new-tab attributes and restore the mentor onboarding callout in the Vue student page. Internal mentor navigation continues through the custom localized router.
2026-07-04 17:05:46 +03:00
topsinoty
0fef13c178 content(student): preserve master’s team guidance
Carry master’s exact Estonian introduction, software, Helpdesk, culture, and mentor wording into the Vue locale. Preserve TipiLAN, ASI Karikas, Remondikohvik, and mentor destinations as structured fields while retaining the refactor’s tags and activity lists.
2026-07-04 17:05:41 +03:00
topsinoty
fc47e559ae content(partners): add TalTech engineering faculty
Carry master’s exact partner record and TalTech_Insener_EST_gradient.png into the paths served by Vue. Retain every partner logo extension from master while keeping the existing public/assets/partners directory.
2026-07-04 17:03:47 +03:00
topsinoty
3a586498aa refactor(portfolio): retain master image filenames
Keep master’s exact portfolio image references, including their extensions. The Vue image helper strips extensions only when resolving generated variants, so source naming remains visible without changing the public/assets/ourwork-images structure.
2026-07-04 17:00:40 +03:00
topsinoty
2d5ce869fc content(history): preserve master’s board chronology
Add the 2025/2026 board and retain master’s exact historical filenames and term labels. Move the five newly referenced portraits into public/assets/past-management-images/original so Vue’s optimiser owns their generated variants while preserving master’s category layout.
2026-07-04 16:59:08 +03:00
topsinoty
bc575a0260 content(management): publish master’s 2026 board
Replace the current board roster with master’s exact names, roles, contact details, and filenames. Place the shared coming-soon portrait under public/assets/management-images/original, preserving master’s category structure inside Vite’s served asset root.
2026-07-04 16:58:19 +03:00
topsinoty
ce83cd5378 fix(members): archive refactor-only names
Preserve every member name that existed only on the refactor branch under an inactive tier. Vue continues to render master’s junior, senior, and graduate rosters while the merge retains the displaced records without guessing a new status.
2026-07-04 16:57:12 +03:00
topsinoty
6805d88530 content(members): apply master membership changes
Move master’s complete membership roster into the YAML path loaded by Vue. The update records new members, promotions, spelling corrections, and graduate transitions without duplicating people across active tiers.
2026-07-04 16:56:55 +03:00
topsinoty
a65d5c665d fix(mentors): retain inactive refactor profiles
Keep Karina Reisel’s exact refactor profile in the shared mentor dataset while marking it inactive. Filter inactive records in Vue so master’s current public roster remains authoritative without deleting historical profile data.
2026-07-04 16:54:36 +03:00
topsinoty
a40dee8364 content(mentors): carry master roster into Vue
Apply master’s mentor roster in the data path consumed by Vue. This preserves Katri Lotamõis’s exact revised wording, adds Lembitu Valdmets’s exact profile, and keeps master’s image filenames because the Vue helper handles extensions directly.
2026-07-04 16:54:04 +03:00
topsinoty
fe8c2393eb merge(master): reconcile mentor updates with Vue site
Merge master without restoring the retired Jekyll build, whose layouts, root pages, Sass, and duplicate data paths are not consumed by the Vite build or GitHub Pages artifact.

Carry master’s mentor entries and wording exactly into public/_data/mentors.yml, changing only image filename suffixes required by the Vue image helper. Add Karina Reisel’s exact source portrait and retain the project MIT license.

Exclude line-ending-only rewrites and duplicate board portraits after verifying that byte-identical files already exist in the management image paths used by Vue. Image optimisation and the production build both pass with the resolved tree.
2026-07-04 16:40:21 +03:00
topsinoty
3f85860f83 docs(readme): document Vue setup and project structure
Replace the Svelte badge and stale runtime references with the Vue 3 toolchain, current Node requirement, and reproducible npm ci installation path.

Tell the contributor story from entry point to page: explain how App.vue, the custom router, bilingual routes, shared components, locale JSON, YAML content, public assets, and Vue Storybook fit together, then list the commands used for local development and verification.

Update the component guide for Vue props, slots, layout primitives, Svg.vue variants, and Storybook controls so contributors can find the right abstraction before adding route-specific markup.
2026-07-04 15:55:55 +03:00
topsinoty
e5fc209203 fix(router,i18n): harden links, loading, and localized content
Make the custom router follow browser link conventions: resolve clicks from nested elements, preserve query strings and hashes, ignore modified, download, targeted, external, and in-page links, synchronize navigation listeners, and prevent stale lazy imports from replacing the newest route.

Keep language selection authoritative during translated navigation, reject unsupported stored locales, prevent stale translation requests from winning races, and synchronize the document language with standards-based et-EE and en-GB locale identifiers.

Route every YAML-backed page through one loader that checks HTTP responses, validates the parsed data shape against its fallback, and returns safe defaults. Render locale-neutral workshop months with Intl.DateTimeFormat and localize the embedded calendar URL from the active locale.

Replace HTML-bearing Helpdesk and workshop translations with structured plain-text segments rendered through escaped Vue bindings. This preserves emphasis and spacing without v-html, while direct MapLibre markers now build fixed DOM nodes through textContent and clean up safely after asynchronous loading.
2026-07-04 15:55:05 +03:00
topsinoty
13322e11cb refactor(vue): migrate app, routes, and tooling from Svelte
Replace the Svelte runtime, Vite plugin, Storybook adapter, and component files with Vue 3 equivalents while preserving the existing route table, page markup, styling, assets, deployment shape, and npm workflows.

Move shared and page-level state onto Vue refs, computed values, lifecycle hooks, and script setup components. Recreate the custom async router and translation composable as Vue-native modules so navigation and bilingual content continue to work without introducing a router or state-management dependency.

Adopt the maintained @lucide/vue package, remove the Svelte icon and map wrappers, and initialize MapLibre directly on the Helpdesk page. Replace the Svelte CSF story with a Vue Storybook story, remove obsolete aliases and generation/config files, and update the audited lockfile with no known vulnerabilities.
2026-07-04 15:51:11 +03:00
d5345c2caa Merge pull request #163 from Lapikud/new-juhatus
New juhatus & partner
2026-06-28 00:38:43 +03:00
ba2de13752 Change scss img size to fixed 150px 2026-06-27 20:27:20 +03:00
5fa61a2b45 Add back old images 2026-06-26 14:30:46 +03:00
e836263f5f New partner 2026-06-16 18:38:51 +03:00
e53a816e64 new management and old management 2026 2026-06-14 19:13:09 +03:00
Kerdo Käärma
fb84043468 Update and promote members in the management list (#162)
* Update members list

* Update members list again

* Add missed members and promote new management to senior
2026-05-09 15:10:51 +03:00
Kerdo Käärma
32f4209804 Update members list (#160) 2026-05-07 18:58:14 +03:00
Henri Karba
33eac3b896 npm audit fix 2026-05-02 15:07:14 +03:00
Henri
be92742e96 smaller laptop screen fixes 2026-05-01 00:25:56 +03:00
Henri
c7d7098b15 aboutus text 2026-04-23 17:42:38 +03:00
Henri
63c4960062 updated image optimisation, updated readme accrodingly. fixed image issues, fixed navbar on mobile view + more 2026-04-23 15:48:34 +03:00
Henri
08d6e08c4d updated and fixed most pages + navbar update on home page 2026-04-22 20:59:29 +03:00
Henri
83e090ef8f workshops template 2026-04-21 20:17:59 +03:00
Henri
2ef643d15f transfer 2026-04-21 19:41:01 +03:00
Henri
6b885d80af Merge branch 'svelte-henri' of github.com:v4ltages/lapikud.github.io into svelte-henri 2026-04-17 10:05:08 +03:00
Henri
ce7a5c1ee7 updated images and data to the current live state 2026-04-17 10:04:55 +03:00
Henri
f5f737b790 fixes 2026-04-16 18:40:52 +03:00
Henri
85f44980e2 mentors update + navbar bug fixes 2026-04-16 16:54:06 +03:00
Henri
c2a09816db mentors update + navbar bug fixes 2026-04-16 16:48:35 +03:00
Henri
0a31f0aa91 for student page done 2026-04-16 15:58:19 +03:00
Henri
b09ed9795b cname + nav about page name change 2026-04-09 10:00:32 +03:00
Henri
b319967f61 updated workflow 2026-04-09 09:37:50 +03:00
Henri
2b49761fa3 changed hinnakiri location 2026-04-09 09:18:50 +03:00
Henri
dde5aac7d2 updated Grid and pages using grid, changed logo image to an svg, updated favicon logic 2026-04-09 09:16:22 +03:00
Henri
adfe82280a changed workflow to github pages artifact 2026-04-08 11:07:26 +03:00
Henri
3f6c7abec3 github workflow fixes 2026-04-08 00:39:29 +03:00
Henri
031706714c github workflow 2026-04-08 00:33:26 +03:00
Henri
62cccf180f partners data update 2026-04-08 00:25:15 +03:00
Henri
438aa957a1 updated language loading changes on all pages 2026-04-08 00:13:42 +03:00
Henri
3d27217769 fixed language issues, updated routing, completed first version of managment page 2026-04-07 23:55:38 +03:00
Henri
ae1a44b65f changes for nav and Juhatus 2026-04-06 21:10:15 +03:00
Henri
99ad293289 temporary push, with testing changes for nav and Juhatus 2026-04-06 15:12:14 +03:00
Henri
78f70458e2 small fixes, hero and navbar 2026-04-06 02:55:39 +03:00
Henri
837057a976 initial home page ready 2026-04-06 01:44:17 +03:00
Henri
884281bd58 about us section ready 2026-04-05 22:54:23 +03:00
Henri
eb459ed4b6 rename newHome to Home and remove old Home 2026-04-05 20:27:04 +03:00
Henri
55d4032953 rename newHome to Home and remove old Home 2026-04-03 04:53:44 +03:00
Henri
f586c406e7 bigger screen scale changes 2026-04-03 04:52:41 +03:00
Henri
4d0ef801cc padding updates 2026-04-01 22:53:13 +03:00
cf37c98dfe New newHome page 2026-04-01 22:07:05 +03:00
Renkar
21c8cbee09 New members (#159)
* Add new members, still need to check people up.

* Update member list, fix some member status
2026-04-01 20:10:26 +03:00
Henri
bc19d29268 Merge branch 'svelte-henri' into svelte 2026-03-28 01:02:17 +02:00
Henri
d49462363d new home page design (Hero and first section) 2026-03-28 01:02:05 +02:00
Henri
bfe6363f0b Merge branch 'svelte-henri' into svelte 2026-03-27 23:00:53 +02:00
Henri
f73f73767f new home page design (Hero only right now) 2026-03-27 23:00:35 +02:00
Henri
ccf4d57cea pc transfer 2026-03-19 19:35:20 +02:00
Renkar
3a65a72b5f Remove mentions of hextech (#157) 2026-03-16 12:00:05 +02:00
Henri
5676426c9e Merge branch 'svelte-henri' into svelte 2026-03-05 16:44:08 +02:00
Henri
1b704c7cc4 components and tailwind rework 2026-03-05 16:43:56 +02:00
Henri
4571d22644 components and storybook for development svg previews 2026-03-05 12:27:35 +02:00
Renkar
f082f10655 Add recent projects, wording/pictures can be changed to better.. (#155) 2026-03-02 09:32:23 +02:00
Henri
08c31d1063 Merge branch 'svelte-henri' into svelte 2026-02-26 22:50:42 +02:00
Henri
567f872cc2 readme update with wsl instructions 2026-02-26 22:50:32 +02:00
Henri
ff1104fdfd Merge branch 'svelte-henri' into svelte 2026-02-26 21:01:44 +02:00
Henri
948f444147 sildeshow component (not tested) 2026-02-26 21:00:17 +02:00
Henri
17c2ddb3de Merge branch 'svelte-henri' into svelte 2026-02-26 20:41:52 +02:00
Henri
8e7cfac07b kalender page 2026-02-26 20:41:40 +02:00
Henri
58da121def Merge branch 'svelte-henri' into svelte 2026-02-26 20:15:04 +02:00
Henri
5d004bf043 stiim page 2026-02-26 20:14:47 +02:00
39a8ca498b Reduce size of helpdesk bg pic and mentor page changes 2026-02-25 23:52:32 +02:00
Henri
89778446a6 helpdesk page 2026-02-25 15:30:13 +02:00
Henri
981f47d909 board page 2026-02-25 14:41:06 +02:00
Henri
b713ed3589 transfer sveltekit design to svelte (juhatus page) 2026-02-25 00:41:55 +02:00
Henri
e7162a8d0e external links go to _blank 2026-02-24 05:30:28 +02:00
4a452e9793 Home, card, mentors page update 2026-02-23 23:06:41 +02:00
Henri
c1cd4aeb8f changes 2026-02-16 20:18:52 +02:00
Henri
e8fd801f9b navbar changes + logo 2026-02-16 19:52:27 +02:00
Henri
0885de6e77 fixed error 2026-02-12 05:44:37 +02:00
Henri
54dcc26cc9 fixed error 2026-02-12 05:39:34 +02:00
Henri
f95fea69ad removed calendar link 2026-02-12 05:28:52 +02:00
Henri
9d13b57d2e lang changes, new pages, data changes 2026-02-12 05:27:53 +02:00
Henri
1504844f0b gitignore 2026-02-12 03:14:34 +02:00
Henri
18f25ff32c navbar changes 2026-02-12 02:51:43 +02:00
Henri
ea749fe7b5 navbar link fix 2026-02-12 02:45:02 +02:00
Henri
ecf19c4522 mobile view grid changes 2026-02-12 02:33:02 +02:00
Henri
21d4b61763 mobile navbar animation 2026-02-12 02:29:02 +02:00
Henri
d9179334de mobile navbar fix 2026-02-12 02:12:07 +02:00
jeuzee
3a6f273b2a added remondikohvik links to student.html page (#154) 2026-02-08 15:06:44 +02:00
Henri
3e38e0e3cf footer, navbar and components rework 2026-01-23 21:57:05 +02:00
Henri
f3a3c4e042 added footer + changed partner logos visual 2026-01-21 20:12:32 +02:00
Henri
5d21aa119d configurable borderRadius for Button and Dropdown 2026-01-21 19:10:35 +02:00
Henri
cf8b623340 main page, navbar mobile not fixed 2026-01-21 12:36:53 +02:00
Henri
490d9b2feb fixes 2025-12-03 22:09:45 +02:00
Henri
8839dcdc93 more components 2025-11-24 19:25:14 +02:00
Henri
aae22efcaa navbar fixes 2025-11-21 20:10:05 +02:00
Henri
8c18827dc5 initial stuff 2025-11-21 08:15:07 +02:00
Henri
a38a367ac5 development README 2025-11-21 04:03:26 +02:00
Henri
f948cb2d74 development README 2025-11-21 04:01:15 +02:00
Henri
4e5a94b53d development README 2025-11-21 04:00:51 +02:00
Henri
90d0c3c6df development README 2025-11-21 03:59:32 +02:00
Henri
d88cda846b README note 2025-11-21 03:22:42 +02:00
Henri
fa4545c468 README changes 2025-11-21 03:17:30 +02:00
Henri
c3144501aa README changes 2025-11-21 03:16:34 +02:00
Henri
e8651f6557 custom router now working 2025-11-21 03:15:09 +02:00
Henri
7dfb5adda1 transfer to PC 2025-11-21 01:58:01 +02:00
679ace976a Helpdesk page 2025-08-18 06:02:46 +03:00
4c7106afd9 larger text 2025-08-13 21:19:55 +03:00
7d191df945 Add highlighting to bus info 2025-08-13 21:13:32 +03:00
b8ec5319c4 Kontakt info 2025-08-13 21:07:18 +03:00
44f586cb66 Second commit because first was to initialize 2025-07-11 20:39:35 +03:00
cbbe43a691 New sveltekit version of page 2025-07-11 20:38:06 +03:00
395 changed files with 10704 additions and 4088 deletions

View File

@@ -1,15 +0,0 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2
[*.{md,markdown}]
trim_trailing_whitespace = false

56
.github/workflows/build-deploy.yml vendored Normal file
View File

@@ -0,0 +1,56 @@
name: Build and Deploy to GitHub Pages
on:
push:
branches:
- v2
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Optimise images
run: node scripts/optimise-images.js
- name: Build project
run: npm run build
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload build artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./dist
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

34
.gitignore vendored
View File

@@ -1,5 +1,31 @@
_site # Logs
.sass-cache logs
.jekyll-cache *.log
.jekyll-metadata npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Image optimization cache
public/assets/**/optimised
# Editor directories and files
.vite/
.vscode/
.idea .idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.mise.toml
*storybook.log
storybook-static

View File

@@ -1,19 +0,0 @@
---
layout: default
title: 404 - Page not found
---
<div class="page">
<h1>Vabandame, lehekülge ei leitud.</h1>
<h1>(Viga 404)</h1>
</div>
<script>
// on 2016-02-01 GitHub Pages upgraded to Jekyll3, which broke all blog posts with trailing slashes
// and there are tons of links out there on the web to posts with a trailing slash, so can't ignore it
// Fix borrowed from https://github.com/daattali/daattali.github.io/blob/master/404.html#L14-L21
var url = location.href;
if(url.substr(url.length - 1) === '/') {
window.location = url.substr(0, url.length - 1);
}
</script>

1
CNAME
View File

@@ -1 +0,0 @@
www.lapikud.ee

163
README.md
View File

@@ -1,106 +1,149 @@
# Lapikute väliveeb # Lapikud External Website
Tegu on [Jekyll](https://jekyllrb.com/) peale ehitatud uhiuue lehega ![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)
# Development plan 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 are on `Google Drive > Lapikud > Tarkvara > Väliveeb` Materials and design files are on **Google Drive Lapikud Tarkvara Väliveeb**
# Contribution guide ---
## 1. Create Issues ## 🙋 How to help
Easiest way to help would be to create issues about things that are missing and wrong You don't need to write code to contribute!
## 2. Fork this repo and create a pull request ### 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.
Fork this repo to your own account and create a pull request for changes you have done in there ### 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
# How to setup development environment ---
Windows: ## 🛠️ Setting up your dev environment
0. Install the Windows Subsystem for Linux ### What you need first
Install Ubuntu - [Node.js](https://nodejs.org/) — v20.19 or higher; use the current **LTS version** when possible
https://docs.microsoft.com/en-us/windows/wsl/install-win10 > Node.js comes with `npm` included, so you don't need to install that separately.
1. Install Ruby ---
sudo apt install build-essential ruby ruby-dev dh-autoreconf ### Don't have a code editor yet?
2. Install Jekyll 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.
sudo gem install jekyll ---
3. Clone repo ### Windows? Set up WSL first (recommended)
WSL lets you run Linux commands on Windows, which makes everything smoother.
<details>
<summary>📋 WSL setup steps</summary>
**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"
</details>
---
### Installation
**1. Clone the repo** — this downloads the project to your computer:
```bash
git clone https://github.com/Lapikud/lapikud.github.io.git git clone https://github.com/Lapikud/lapikud.github.io.git
4. Serve the page (Use bash if on Windows)
cd lapikud.github.io cd lapikud.github.io
jekyll serve --host 0.0.0.0 ```
5. Image converter usage (requires imagemagick) **2. Install dependencies** — this installs the exact package versions recorded by the project:
No one wants to download 5MB images that are then shown in a 100x100px box. ```bash
npm ci
```
**Always resize images before committing them!** **3. Optimise images** — the optimised image variants are not stored in the repo, so you need to generate them locally before running the site:
sudo apt-get install imagemagick ```bash
sh convert-past-management-images.sh npm run optimise
```
MacOS: > You only need to run this once after cloning, and again whenever you add or change images in any `original/` folder.
0. Install Homebrew if you don't have it already **4. Start the dev server** — this runs the site locally so you can see your changes live:
If you're using Bash, write `/bin/bash` instead of `/bin/zsh`. ```bash
npm run dev
```
/bin/zsh -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Then open the URL it gives you (usually `http://localhost:5173`) in your browser. 🎉
1. Install the latest stable version of Ruby ---
brew install ruby ## 🧭 How the project fits together
Also configure your shell environment. 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.
If you're using Bash, replace `.zshrc` with `.bash_profile`.
if [ -d "/usr/local/opt/ruby/bin" ]; then - `src/routes/` contains the page components and the bilingual public route table.
export PATH=/usr/local/opt/ruby/bin:$PATH - `src/components/` contains reusable UI building blocks; layout primitives live in `src/components/layout/`.
export PATH=`gem environment gemdir`/bin:$PATH - `src/layout/` contains the site-wide navigation and footer.
fi - `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.
Check that Ruby is working. Page components use Vue's `<script setup>` syntax and Composition API primitives such as `ref` and `computed`. Use `usePageText("PageName")` for page translations, `loadYaml(path, fallback)` for YAML-backed content, and the exported `navigate()` helper for programmatic internal navigation.
ruby -v Useful commands:
2. Install the latest Jekyll gem ```bash
npm run dev # start the local site
npm run build # create a production build
npm run storybook # preview components in Storybook
npm run build-storybook # verify the static Storybook build
npm run optimise # regenerate local image variants
```
sudo gem install jekyll ---
3. Clone repo ## 🖼️ Adding images
git clone https://github.com/Lapikud/lapikud.github.io.git Place your original image files (PNG, JPG, etc.) into the appropriate `public/assets/{category}/original/` folder, then run:
4. Serve the page ```bash
npm run optimise
```
cd lapikud.github.io The script will generate optimised WebP and JPG variants automatically. **Do not commit anything inside `optimised/` folders** — those are generated and ignored by git.
jekyll serve --host 0.0.0.0
5. Image converter usage (requires imagemagick) > SVGs don't need optimising — just place them directly where they're needed, no `original/` folder required.
No one wants to download 5MB images that are then shown in a 100x100px box. ---
**Always resize images before committing them!** ## 🚀 Deployment
brew install imagemagick Nothing to do here — GitHub automatically builds and deploys the site whenever something is pushed to the `v2` branch. The optimised images are generated as part of the build, so you don't need to worry about that either.
sh convert-past-management-images.sh
# Deploy It usually takes **25 minutes**. You can watch it happen in the [Actions tab](https://github.com/Lapikud/lapikud.github.io/actions).
Push to master branch and wait for deployment, it could take up to 2h for the page to update.
You can check the progress by clicking on the [environment](https://github.com/Lapikud/lapikud.github.io/deployments) link
![Deployments link](https://i.imgur.com/26jnh6k.png)

View File

@@ -1,8 +0,0 @@
title: Talllinna Tehnikaülikooli Tarkvaraarenduse klubi Lapikud
email: about@lapikud.ee
description: > # this means to ignore newlines until "baseurl:"
MTÜ Lapikud on Tallinna Tehnikaülikooli Tarkvaraarendusklubi, mis ühendab endisi ja praegusi IT huvilisi Tallinna Tehnikaülikooli üliõpilasi. Organisatsioon loodi 2002 aastal informaatika tudengite poolt, kelle erialatunnuseks oli "LAP". Targad mehed otsustasid, et järelikult on nad "Lapikud".
url: "http://lapikud.ee" # the base hostname & protocol for your site, e.g. http://example.com
instagram_username: lapikud
github_username: lapikud
future: false

View File

@@ -1,36 +0,0 @@
<footer class="main-footer">
<section class="container">
<div class="row">
<div class="column footer-contact">
<h3>MTÜ Lapikud</h3>
<p>Aadress: Akadeemia tee 5, 12616 Tallinn, Eesti</p>
<p>E-post: <a href="mailto:lapikud@lapikud.ee">lapikud@lapikud.ee</a></p>
<p>Telefon: <a href="tel:+372 58 160 799">+372 58 160 799</a></p>
<p>Messenger: <a href="https://m.me/Lapikud">m.me/Lapikud</a></p>
<p>Reg. kood: 801 67 145</p>
<p>Swedbank EE812200221019551756</p>
</div>
<div class="column footer-nav">
<h3>Navigatsioon</h3>
<ul>
<li><a href="/">Esileht</a></li>
{% include main_nav.html %}
</ul>
</div>
<div class="column footer-nav">
<h3>Jälgi meid!</h3>
<ul>
<li><a href="https://www.instagram.com/lapikud/">Instagram</a></li>
<li><a href="https://www.facebook.com/Lapikud/">Facebook</a></li>
<li><a href="https://github.com/Lapikud/">GitHub</a></li>
<li><a href="https://github.com/Lapikud/lapikud.github.io">Source Code</a></li>
</ul>
</div>
</div>
<div class="row">
<div class="column footer-copyright">
<a href="https://lapikud.ee">&copy; 2025 MTÜ Lapikud</a>
</div>
</div>
</section>
</footer>

View File

@@ -1,30 +0,0 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ page.title }}</title>
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png?v=LbyW42We5z">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png?v=LbyW42We5z">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon/favicon-16x16.png?v=LbyW42We5z">
<link rel="manifest" href="/assets/favicon/site.webmanifest?v=LbyW42We5z">
<link rel="mask-icon" href="/assets/favicon/safari-pinned-tab.svg?v=LbyW42We5z" color="#f58120">
<link rel="shortcut icon" href="/assets/favicon/favicon.ico?v=LbyW42We5z">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-config" content="/assets/favicon/browserconfig.xml?v=LbyW42We5z">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/normalize/7.0.0/normalize.min.css" />
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/milligram/1.3.0/milligram.min.css">
<link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}?{{ site.time | date: "%s" }}">
<link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
<!-- leaflet js styles for map support -->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.3/dist/leaflet.css"
integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ=="
crossorigin=""/>
{% if jekyll.environment == 'production' and site.google_analytics %}
{% include google-analytics.html %}
{% endif %}

View File

@@ -1,19 +0,0 @@
<!-- header.scss -->
<nav class="navigation">
<a href="/" {% if page.url == '/' %}style="display: none;"{% endif %}>
<img id="header-logo" class="logo" src="{{ "/assets/logo.svg " | relative_url }}">
</a>
<div class="menu">
<a href="#" class="float-right" id="main-menu-button">
<svg class="logo" height="32" width="32" viewBox="0 0 768 1024" xmlns="http://www.w3.org/2000/svg">
<path d="M0 192v128h768v-128h-768z m0 384h768v-128h-768v128z m0 256h768v-128h-768v128z" />
</svg>
</a>
<ul id="main-menu">
{% include main_nav.html %}
</ul>
</div>
</nav>

View File

@@ -1,6 +0,0 @@
<li><a href="/student">Tudengile</a></li>
<li><a href="/mentors">Mentorid</a></li>
<li><a href="/helpdesk">Helpdesk</a></li>
<li><a href="/ourwork">Ettevõttele</a></li>
<li><a href="/aboutus">Lapikutest</a></li>
<li><a href="/contact">Kontakt</a></li>

View File

@@ -1,9 +0,0 @@
<!-- facebook widget thing support -->
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = 'https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.1';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

View File

@@ -1,7 +0,0 @@
<!doctype html>
{% include head.html %}
{% include header.html %}
{{ content }}
{% include footer.html %}
{% include scripts.html %}
</html>

View File

@@ -1,10 +0,0 @@
---
layout: default
---
<div class="page">
{%- assign date_format = "%F" -%}
<h1>{{ page.title | escape }}</h1>
<h5> {{ page.date | date: date_format }}</h5>
{{ content }}
</div>

View File

@@ -1,113 +0,0 @@
#contact {
h2 {
margin-top : 1.5rem;
}
#helpdesk {
display : flex;
justify-content : center;
align-items : center;
#helpdesk-banner-container {
background : black;
padding : 3rem;
}
#helpdesk-banner {
display : block;
width : 100%;
height : auto;
}
#helpdesk-banner-container, #helpdesk-info {
flex : 1;
margin : 0 2rem;
}
}
#management {
#container {
display : flex;
flex-direction : row;
flex-wrap : wrap;
justify-content : center;
.person {
margin-left : 2rem;
margin-right : 2rem;
margin-bottom : 5rem;
img {
display : block;
width : 100%;
height : auto;
}
* {
margin : 0.2rem 0;
}
}
}
}
#main-wrapper {
width : 100%;
display : flex;
flex-direction : row;
flex-wrap : wrap;
justify-content : center;
align-items : center;
}
#maparea {
margin : 0 2rem;
min-width : 44.55%;
flex : 1;
#map {
width : 100%;
float : right;
margin : 0 auto;
height : 60vh;
max-height : 300px;
}
}
#main {
margin : 0 2rem;
h4{
padding-bottom : 5px;
}
}
* {
margin : 0.2rem 0;
}
}
@media (max-width : 900px) {
#contact {
#helpdesk {
flex-direction : column;
#helpdesk-banner-container {
margin : 2rem 0;
}
#helpdesk-info {
margin : 0;
}
}
#main-wrapper{
#maparea{
flex-direction: column;
margin: 2rem;
}
}
}
}

View File

@@ -1,42 +0,0 @@
.main-footer {
background: #fcfcfc;
padding: 2rem 0;
margin-top: 5rem;
.container {
max-width: 80rem;
}
.footer-contact {
margin-bottom: 2rem;
p {
margin: 0.2rem 0;
}
}
.footer-copyright {
text-align: center;
a {
display: inline-block;
padding: 1rem;
}
}
.footer-nav {
flex-shrink: 1.5;
ul {
list-style-type: none;
li {
margin: 0;
padding: 0;
a {
padding: .5rem .2rem;
display: inline-block;
width: 100%;
}
}
}
}
}

View File

@@ -1,101 +0,0 @@
.navigation {
margin-top: .5rem;
margin-left: auto;
margin-right: auto;
margin-bottom: 5rem;
padding: 1rem 2rem;
height: 50px;
background: #ffffff;
color: #f0941d;
max-width: 112.0rem;
.logo {
height: 32px;
vertical-align: middle;
display: inline;
}
#header-logo {
height : 8rem;
}
.menu {
display: inline;
@media (max-width: 40.0rem) {
ul, &:active ul {
display: none;
position: absolute;
top: 45px;
right: 20px;
z-index: 10;
background: #fff;
border: 1px solid #DDDDDD;
width: 20rem;
margin: 0;
padding: 0.5rem 0;
li {
display: block;
margin: 0;
padding: 0;
a {
width: 100%;
display: block;
text-align: center;
padding: 1rem 2rem;
}
}
}
&:hover ul {
display: inline-block;
}
#main-menu-button svg {
fill: #000000
}
#main-menu-button:hover svg {
fill: $color-secondary;
}
#main-menu-button:active svg {
fill: $color-primary;
}
}
}
@media (min-width: 40.1rem) {
#main-menu-button {
display: none;
}
.menu ul {
margin: 0;
display: inline-block;
float: right;
li {
display: inline-block;
margin: 0;
padding: 0;
a {
padding: 1rem;
}
}
.register-button {
border: 0.1rem solid $color-primary;
border-radius: .4rem;
&:hover {
color: #ffffff;
background-color: $color-secondary;
border-color: $color-secondary;
}
}
}
}
}

View File

@@ -1,152 +0,0 @@
#helpdesk-page {
#helpdesk-banner {
background : black;
display : flex;
flex-direction : row;
flex : 1;
justify-content : center;
align-items : center;
text-align : center;
margin : 3rem auto;
padding : 2rem;
h1, h3 {
color : white;
font-weight : 400;
}
.emphasis-text-bold {
font-weight : bold;
}
.emphasis-text-color {
color : $color-primary;
}
#helpdesk-logo {
display : block;
width : 100%;
height : auto;
}
#helpdesk-logo-container {
flex : 1;
padding : 25px;
}
#banner-text {
flex : 2;
}
}
#maparea {
display : flex;
align-items : center;
justify-content : center;
.siema, #map {
width : 50%;
max-height : 300px;
margin : 20px;
}
#map {
height : 60vh;
max-height : 300px;
}
.siema {
.carousel-image-container {
display : flex;
justify-content : center;
align-items : center;
img {
max-height : 300px;
width : 100%;
height : auto;
object-fit : scale-down;
}
}
}
}
#pricing {
margin-bottom : 2rem;
p {
margin : 1rem auto;
font-weight : bold;
}
table {
width : auto;
th td {
font-weight : bold;
}
tr:first-child {
max-width : 40%;
}
}
}
#location {
h4 {
margin : 0.1rem auto;
}
}
#contact {
display : flex;
flex-direction : row;
.subtext {
opacity : 0.7;
}
#opening-times, #contact-methods {
flex : 1;
padding : 15px;
}
#contact-methods {
h4 {
margin : 0.1rem auto;
}
}
}
}
@media (max-width : 900px) {
#helpdesk-page {
#helpdesk-banner {
flex-direction : column;
}
table {
tr:first-child {
max-width : 30%;
}
td, th {
padding : 0.5rem 0.5rem;
}
}
#maparea {
flex-direction : column;
.siema, #map {
width : 100%;
}
}
#contact {
flex-direction : column;
}
}
}

View File

@@ -1,75 +0,0 @@
#history {
.management-for-year {
display : flex;
flex-direction : column;
.year {
display : flex;
flex-direction : row;
justify-content : center;
flex-wrap : wrap;
.person {
display : flex;
flex-direction : column;
align-items : center;
margin : 0 2rem;
h5 {
margin-top : 0.5rem;
}
.img-container {
height : 150px;
width : 150px;
display : flex;
justify-content : center;
align-items : center;
overflow : hidden;
img {
width : 150px;
height : auto;
}
}
}
}
}
}
@media (max-width : 900px) {
#history {
h1 {
font-size : 4rem;
}
.management-for-year {
.year {
flex-direction : column;
.person {
.img-container {
height : 200px;
width : 200px;
img {
height : auto;
width : 200px;
}
}
h5 {
font-size : 2.3rem;
}
}
}
}
}
}

View File

@@ -1,104 +0,0 @@
.home {
@media (max-width : 900px) {
h1 {
font-size : 3.6rem;
}
}
.logo_container {
display : flex;
flex-direction : row;
flex-wrap : wrap;
align-items : center;
justify-content : center;
text-align : center;
margin : 4rem 0;
#logo {
max-width : 60rem;
width : 100%;
padding : 50px 90px;
}
}
.lg-icon-container {
justify-content : flex-start;
align-content : flex-start;
align-items : flex-start;
margin : 0;
margin-top : 4rem;
display:flex;
a {
flex-direction : row;
justify-content : center;
align-items : center;
align-content : flex-start;
text-align : center;
margin : auto;
flex : 2;
.lg-icon {
fill : #f0941d;
width : 10rem;
height : 10rem;
flex : 1;
}
.regularText {
color: #1e1e1e;
}
}
@media (min-width : 40.0rem) {
.column {
flex-direction : column;
justify-content : flex-start;
align-items : center;
align-content : flex-start;
text-align : center;
}
}
}
.description {
margin-top : 1em;
}
@media (min-width : 40.0rem) {
.description {
margin-top : 3em;
}
}
.partners {
#partners-container {
display : flex;
flex-wrap : wrap;
justify-content : space-evenly;
align-items : center;
a {
color : #1e1e1e;
img {
max-width : 300px;
max-height : 150px;
width : 100%;
height : auto;
object-fit : scale-down;
margin : 1rem auto;
}
h4 {
text-align : center;
}
}
}
@media (max-width : 900px) {
#partners-container {
flex-direction : column
}
}
}
}

View File

@@ -1,34 +0,0 @@
#members {
#banner-container-link {
margin : 0 auto;
h3 {
padding : 1rem 4rem;
}
}
.members-container {
ul {
columns : 4;
}
}
}
@media (max-width : 900px) {
#members {
#banner-container-link {
margin : unset;
h3 {
padding : 1rem 0;
}
}
.members-container {
ul {
columns : 1;
}
}
}
}

View File

@@ -1,76 +0,0 @@
#mentors {
.mentor {
display : flex;
width : 100%;
flex-direction : row;
margin : 4rem auto;
.photo-container {
flex : 1;
img {
display : block;
height : auto;
width : 100%;
margin-top : 2rem;
}
}
.description {
flex : 2;
display : flex;
flex-direction : row;
* {
margin : 0.1rem 0;
}
h1, h4 {
margin : 1rem 0;
}
.general {
flex : 2;
margin : 0 3rem;
}
.varia {
flex : 3;
margin : 1rem 3rem 0;
}
}
.mentor-info-text {
flex : 3;
display : flex;
flex-direction : column;
padding-left : 5rem;
padding-right : 3rem;
}
}
}
@media (max-width : 900px) {
#mentors {
.mentor {
flex-direction : column;
.description {
flex-direction : column;
.general, .varia {
margin : 0;
}
}
.photo-container {
img {
max-height : 75vh;
max-width : 75vh;
}
}
}
}
}

View File

@@ -1,67 +0,0 @@
#ourwork-banner {
margin : 5rem 0;
a {
display : flex;
justify-content : center;
}
}
#ourwork-done {
.work-item {
padding : 1rem;
margin : 7rem 0;
display : flex;
flex-direction : row;
max-height : 75vh;
.description {
flex : 2;
h3 {
overflow : hidden;
text-overflow : ellipsis;
}
}
.thumbnail {
flex : 3;
display : flex;
justify-content : center;
align-items : center;
}
img {
display : block;
width : auto;
height : auto;
max-height : 50vh;
}
h2, h3 {
text-align : center;
margin-bottom : 0.3rem;
}
}
}
@media (max-width : 900px) {
#ourwork-done {
.work-item {
flex-direction : column;
max-height : none;
}
}
#ourwork-banner {
h1 {
font-size : 3.6rem;
}
}
}

View File

@@ -1,22 +0,0 @@
.banner {
background : #f0941d;
color : white;
font-weight : bold;
padding : 2rem;
border-radius : 8rem;
}
.page {
display : flex;
flex-direction : column;
flex : 1;
width : 85vw;
max-width : 1200px;
min-height : 50vh;
margin : 0 auto 0;
}
.centered-text {
text-align : center;
}

View File

@@ -1,12 +0,0 @@
#statute {
p, ul {
margin-bottom: 0.5rem;
}
li {
margin-bottom: 0.1rem;
}
h4 {
margin-top: 2.5rem;
}
}

View File

@@ -1,6 +0,0 @@
.stream {
.video {
padding: 5px;
flex: 1 1 400px;
}
}

View File

@@ -1,35 +0,0 @@
.activities-info {
display : flex;
flex-direction : row;
margin : 3rem auto;
.desc {
flex : 1;
padding-right : 3rem;
}
.promo-image {
display : flex;
align-items : center;
flex : 1;
img {
display : block;
width : 100%;
height : auto;
}
}
}
@media (max-width : 900px) {
.activities-info {
flex-direction : column;
.desc {
padding : 0;
h1 {
font-size : 3.6rem
}
}
}
}

View File

@@ -1,30 +0,0 @@
---
layout: default
title: Lapikutest - Lapikud
---
<div class="page">
<h1>MTÜ Lapikud</h1>
<!-- three icons -->
<div class="row">
<div class="column">
<div>
<h3>Põhikiri</h3>
<p><a href="/statute">Meie põhikiri, millega peaksid kõik liikmed tutvuma.</a></p>
</div>
</div>
<div class="column">
<div>
<h3>Liikmed</h3>
<p><a href="/members">Kõik, kes on ning kunagi olid Lapikute liikmed.</a></p>
</div>
</div>
<div class="column">
<div>
<h3>Ajalugu</h3>
<p><a href="/history">Tutvu Lapikute ajalooga!</a></p>
</div>
</div>
</div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

View File

@@ -1,35 +0,0 @@
---
---
$color-primary: #f0941d;
$color-secondary: #ffa80d;
body {
color: #1e1e1e;
font-family: 'Lato', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
font-weight: 400;
}
a, a:link, a:visited {
color: $color-primary;
}
a:active, a:hover {
color: $color-secondary;
}
h4 {
font-weight: 400;
}
@import 'header';
@import 'footer';
@import 'home';
@import 'mentors';
@import 'contact';
@import 'helpdesk';
@import 'ourwork';
@import 'student';
@import 'shared';
@import 'statute';
@import 'history';
@import 'members';
@import 'striim';

View File

@@ -1,11 +0,0 @@
mkdir -p optimised
for file in original/*; do
echo $file
base_name=$(basename $file)
if [[ $base_name == *"airiin"* ]] || [[ $base_name == *"lembitu"* ]] ; then
gravity=north
else
gravity=center
fi
convert ${file} -resize "400x400^>" -gravity $gravity -extent 400x400 optimised/${base_name%}
done

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -1,8 +0,0 @@
#!/usr/bin/env bash
mkdir -p optimised
for file in original-jpg-converted/*; do
echo $file
base_name=$(basename $file)
magick ${file} -resize "1000x1000>" -quality 89 optimised/${base_name}
done

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 785 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -1,6 +0,0 @@
mkdir -p optimised
for file in original/*; do
echo $file
base_name=$(basename $file)
convert ${file} -resize "200x200^>" -gravity center -crop 200x200+0+0 -quality 89 optimised/${base_name}
done

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Some files were not shown because too many files have changed in this diff Show More