diff --git a/README.md b/README.md index 16b39a0..50ad62b 100644 --- a/README.md +++ b/README.md @@ -14,31 +14,30 @@ - - -
+ - - - Dashboard + + + Mobile Dashboard +
+ Mobile Dashboard
+ - - - Tasks - - - - - - Meals + + + Desktop Dashboard +
+ Desktop Dashboard
-

Toggle GitHub light/dark mode to see both themes.

+

+ Toggle GitHub light/dark mode to see both themes • View all screenshots +

Oikos is a self-hosted web app for families who want to organize their everyday life in one place — without cloud accounts, subscriptions, or data leaving the house. It runs as a Docker container on any home server or NAS, is accessible from every device in the household, and can be installed as a PWA on phones and tablets. diff --git a/docs/index.html b/docs/index.html index f1321e3..6a8012e 100755 --- a/docs/index.html +++ b/docs/index.html @@ -651,35 +651,35 @@
- Oikos Dashboard + Oikos Dashboard

Dashboard

- Task Management + Task Management

Tasks

- Meal Planning + Meal Planning

Meals

- Shopping Lists + Shopping Lists

Shopping

- Calendar + Calendar

Calendar

- Budget Tracking + Budget Tracking

Budget

- Notes + Notes

Notes

- Contacts + Contacts

Contacts

diff --git a/docs/og-image.png b/docs/og-image.png index caa8218..ac6f0d5 100644 Binary files a/docs/og-image.png and b/docs/og-image.png differ diff --git a/docs/screenshots/01-mobile-dark.png b/docs/screenshots/01-mobile-dark.png new file mode 100644 index 0000000..aa85bb1 Binary files /dev/null and b/docs/screenshots/01-mobile-dark.png differ diff --git a/docs/screenshots/01-mobile-light.png b/docs/screenshots/01-mobile-light.png new file mode 100644 index 0000000..d3d81cc Binary files /dev/null and b/docs/screenshots/01-mobile-light.png differ diff --git a/docs/screenshots/01-web-dark.png b/docs/screenshots/01-web-dark.png new file mode 100644 index 0000000..b64a90c Binary files /dev/null and b/docs/screenshots/01-web-dark.png differ diff --git a/docs/screenshots/01-web-light.png b/docs/screenshots/01-web-light.png new file mode 100644 index 0000000..7a43ef4 Binary files /dev/null and b/docs/screenshots/01-web-light.png differ diff --git a/docs/screenshots/02-mobile-dark.png b/docs/screenshots/02-mobile-dark.png new file mode 100644 index 0000000..3c047f1 Binary files /dev/null and b/docs/screenshots/02-mobile-dark.png differ diff --git a/docs/screenshots/02-mobile-light.png b/docs/screenshots/02-mobile-light.png new file mode 100644 index 0000000..51794e9 Binary files /dev/null and b/docs/screenshots/02-mobile-light.png differ diff --git a/docs/screenshots/02-web-dark.png b/docs/screenshots/02-web-dark.png new file mode 100644 index 0000000..8500dd6 Binary files /dev/null and b/docs/screenshots/02-web-dark.png differ diff --git a/docs/screenshots/02-web-light.png b/docs/screenshots/02-web-light.png new file mode 100644 index 0000000..240ab73 Binary files /dev/null and b/docs/screenshots/02-web-light.png differ diff --git a/docs/screenshots/03-mobile-dark.png b/docs/screenshots/03-mobile-dark.png new file mode 100644 index 0000000..c298565 Binary files /dev/null and b/docs/screenshots/03-mobile-dark.png differ diff --git a/docs/screenshots/03-mobile-light.png b/docs/screenshots/03-mobile-light.png new file mode 100644 index 0000000..e8be6c3 Binary files /dev/null and b/docs/screenshots/03-mobile-light.png differ diff --git a/docs/screenshots/03-web-dark.png b/docs/screenshots/03-web-dark.png new file mode 100644 index 0000000..b483199 Binary files /dev/null and b/docs/screenshots/03-web-dark.png differ diff --git a/docs/screenshots/03-web-light.png b/docs/screenshots/03-web-light.png new file mode 100644 index 0000000..65fe97c Binary files /dev/null and b/docs/screenshots/03-web-light.png differ diff --git a/docs/screenshots/04-mobile-dark.png b/docs/screenshots/04-mobile-dark.png new file mode 100644 index 0000000..0d69bcf Binary files /dev/null and b/docs/screenshots/04-mobile-dark.png differ diff --git a/docs/screenshots/04-mobile-light.png b/docs/screenshots/04-mobile-light.png new file mode 100644 index 0000000..b10698c Binary files /dev/null and b/docs/screenshots/04-mobile-light.png differ diff --git a/docs/screenshots/04-web-dark.png b/docs/screenshots/04-web-dark.png new file mode 100644 index 0000000..25a533a Binary files /dev/null and b/docs/screenshots/04-web-dark.png differ diff --git a/docs/screenshots/04-web-light.png b/docs/screenshots/04-web-light.png new file mode 100644 index 0000000..8ab836e Binary files /dev/null and b/docs/screenshots/04-web-light.png differ diff --git a/docs/screenshots/05-mobile-dark.png b/docs/screenshots/05-mobile-dark.png new file mode 100644 index 0000000..82d82ba Binary files /dev/null and b/docs/screenshots/05-mobile-dark.png differ diff --git a/docs/screenshots/05-mobile-light.png b/docs/screenshots/05-mobile-light.png new file mode 100644 index 0000000..d65a8a1 Binary files /dev/null and b/docs/screenshots/05-mobile-light.png differ diff --git a/docs/screenshots/05-web-dark.png b/docs/screenshots/05-web-dark.png new file mode 100644 index 0000000..3669783 Binary files /dev/null and b/docs/screenshots/05-web-dark.png differ diff --git a/docs/screenshots/05-web-light.png b/docs/screenshots/05-web-light.png new file mode 100644 index 0000000..76bd5ef Binary files /dev/null and b/docs/screenshots/05-web-light.png differ diff --git a/docs/screenshots/06-mobile-dark.png b/docs/screenshots/06-mobile-dark.png new file mode 100644 index 0000000..f024411 Binary files /dev/null and b/docs/screenshots/06-mobile-dark.png differ diff --git a/docs/screenshots/06-mobile-light.png b/docs/screenshots/06-mobile-light.png new file mode 100644 index 0000000..d19405a Binary files /dev/null and b/docs/screenshots/06-mobile-light.png differ diff --git a/docs/screenshots/06-web-dark.png b/docs/screenshots/06-web-dark.png new file mode 100644 index 0000000..b9ec963 Binary files /dev/null and b/docs/screenshots/06-web-dark.png differ diff --git a/docs/screenshots/06-web-light.png b/docs/screenshots/06-web-light.png new file mode 100644 index 0000000..5819164 Binary files /dev/null and b/docs/screenshots/06-web-light.png differ diff --git a/docs/screenshots/07-mobile-dark.png b/docs/screenshots/07-mobile-dark.png new file mode 100644 index 0000000..4b11fa8 Binary files /dev/null and b/docs/screenshots/07-mobile-dark.png differ diff --git a/docs/screenshots/07-mobile-light.png b/docs/screenshots/07-mobile-light.png new file mode 100644 index 0000000..a1e194a Binary files /dev/null and b/docs/screenshots/07-mobile-light.png differ diff --git a/docs/screenshots/07-web-dark.png b/docs/screenshots/07-web-dark.png new file mode 100644 index 0000000..b50b9cb Binary files /dev/null and b/docs/screenshots/07-web-dark.png differ diff --git a/docs/screenshots/07-web-light.png b/docs/screenshots/07-web-light.png new file mode 100644 index 0000000..a8c1c2b Binary files /dev/null and b/docs/screenshots/07-web-light.png differ diff --git a/docs/screenshots/08-mobile-dark.png b/docs/screenshots/08-mobile-dark.png new file mode 100644 index 0000000..c6f7811 Binary files /dev/null and b/docs/screenshots/08-mobile-dark.png differ diff --git a/docs/screenshots/08-mobile-light.png b/docs/screenshots/08-mobile-light.png new file mode 100644 index 0000000..334cc04 Binary files /dev/null and b/docs/screenshots/08-mobile-light.png differ diff --git a/docs/screenshots/08-web-dark.png b/docs/screenshots/08-web-dark.png new file mode 100644 index 0000000..7d10b7d Binary files /dev/null and b/docs/screenshots/08-web-dark.png differ diff --git a/docs/screenshots/08-web-light.png b/docs/screenshots/08-web-light.png new file mode 100644 index 0000000..fee55c1 Binary files /dev/null and b/docs/screenshots/08-web-light.png differ diff --git a/docs/screenshots/09-mobile-dark.png b/docs/screenshots/09-mobile-dark.png new file mode 100644 index 0000000..878b8d7 Binary files /dev/null and b/docs/screenshots/09-mobile-dark.png differ diff --git a/docs/screenshots/09-mobile-light.png b/docs/screenshots/09-mobile-light.png new file mode 100644 index 0000000..beac332 Binary files /dev/null and b/docs/screenshots/09-mobile-light.png differ diff --git a/docs/screenshots/09-web-dark.png b/docs/screenshots/09-web-dark.png new file mode 100644 index 0000000..8df6f83 Binary files /dev/null and b/docs/screenshots/09-web-dark.png differ diff --git a/docs/screenshots/09-web-light.png b/docs/screenshots/09-web-light.png new file mode 100644 index 0000000..3e60976 Binary files /dev/null and b/docs/screenshots/09-web-light.png differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-budget-2.png b/docs/screenshots/mobile-dark/mobile-dark-budget-2.png deleted file mode 100644 index 0f59de1..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-budget-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-calendar.png b/docs/screenshots/mobile-dark/mobile-dark-calendar.png deleted file mode 100644 index 27de6af..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-calendar.png and /dev/null differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-contacts-2.png b/docs/screenshots/mobile-dark/mobile-dark-contacts-2.png deleted file mode 100644 index 18a22ff..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-contacts-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-dashboard-2.png b/docs/screenshots/mobile-dark/mobile-dark-dashboard-2.png deleted file mode 100644 index b8cc91f..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-dashboard-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-meal.png b/docs/screenshots/mobile-dark/mobile-dark-meal.png deleted file mode 100644 index 281d41c..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-meal.png and /dev/null differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-notes-2.png b/docs/screenshots/mobile-dark/mobile-dark-notes-2.png deleted file mode 100644 index 5abb3da..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-notes-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-settings.png b/docs/screenshots/mobile-dark/mobile-dark-settings.png deleted file mode 100644 index 16846b6..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-settings.png and /dev/null differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-shopping.png b/docs/screenshots/mobile-dark/mobile-dark-shopping.png deleted file mode 100644 index 500b68f..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-shopping.png and /dev/null differ diff --git a/docs/screenshots/mobile-dark/mobile-dark-tasks-2.png b/docs/screenshots/mobile-dark/mobile-dark-tasks-2.png deleted file mode 100644 index 43599bf..0000000 Binary files a/docs/screenshots/mobile-dark/mobile-dark-tasks-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-budget-2.png b/docs/screenshots/mobile-light/mobile-light-budget-2.png deleted file mode 100644 index 9a73b0a..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-budget-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-calendar.png b/docs/screenshots/mobile-light/mobile-light-calendar.png deleted file mode 100644 index 2564ec1..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-calendar.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-contacts-2.png b/docs/screenshots/mobile-light/mobile-light-contacts-2.png deleted file mode 100644 index 36ba19e..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-contacts-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-dashboard-2.png b/docs/screenshots/mobile-light/mobile-light-dashboard-2.png deleted file mode 100644 index 865ff5c..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-dashboard-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-meal.png b/docs/screenshots/mobile-light/mobile-light-meal.png deleted file mode 100644 index cfaa7d5..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-meal.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-notes-2.png b/docs/screenshots/mobile-light/mobile-light-notes-2.png deleted file mode 100644 index 14fcd54..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-notes-2.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-settings.png b/docs/screenshots/mobile-light/mobile-light-settings.png deleted file mode 100644 index 8e6274c..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-settings.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-shopping.png b/docs/screenshots/mobile-light/mobile-light-shopping.png deleted file mode 100644 index d2dd32a..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-shopping.png and /dev/null differ diff --git a/docs/screenshots/mobile-light/mobile-light-tasks-2.png b/docs/screenshots/mobile-light/mobile-light-tasks-2.png deleted file mode 100644 index b0b9252..0000000 Binary files a/docs/screenshots/mobile-light/mobile-light-tasks-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-budget-2.png b/docs/screenshots/tablet-dark/tablet-dark-budget-2.png deleted file mode 100644 index a8940be..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-budget-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-calendar.png b/docs/screenshots/tablet-dark/tablet-dark-calendar.png deleted file mode 100644 index cb98eda..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-calendar.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-contacts-2.png b/docs/screenshots/tablet-dark/tablet-dark-contacts-2.png deleted file mode 100644 index d5af9fe..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-contacts-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-dashboard-2.png b/docs/screenshots/tablet-dark/tablet-dark-dashboard-2.png deleted file mode 100644 index d6da602..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-dashboard-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-meal.png b/docs/screenshots/tablet-dark/tablet-dark-meal.png deleted file mode 100644 index 77ba4eb..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-meal.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-notes-2.png b/docs/screenshots/tablet-dark/tablet-dark-notes-2.png deleted file mode 100644 index 3b10571..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-notes-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-settings.png b/docs/screenshots/tablet-dark/tablet-dark-settings.png deleted file mode 100644 index de7d8de..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-settings.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-shopping.png b/docs/screenshots/tablet-dark/tablet-dark-shopping.png deleted file mode 100644 index 085dc55..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-shopping.png and /dev/null differ diff --git a/docs/screenshots/tablet-dark/tablet-dark-tasks-2.png b/docs/screenshots/tablet-dark/tablet-dark-tasks-2.png deleted file mode 100644 index 58d589d..0000000 Binary files a/docs/screenshots/tablet-dark/tablet-dark-tasks-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-budget-2.png b/docs/screenshots/tablet-light/tablet-light-budget-2.png deleted file mode 100644 index 331b004..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-budget-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-calendar.png b/docs/screenshots/tablet-light/tablet-light-calendar.png deleted file mode 100644 index f51becc..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-calendar.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-contacts-2.png b/docs/screenshots/tablet-light/tablet-light-contacts-2.png deleted file mode 100644 index 7775cf4..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-contacts-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-dashboard-2.png b/docs/screenshots/tablet-light/tablet-light-dashboard-2.png deleted file mode 100644 index e0e8de0..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-dashboard-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-meal.png b/docs/screenshots/tablet-light/tablet-light-meal.png deleted file mode 100644 index 12e4460..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-meal.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-notes-2.png b/docs/screenshots/tablet-light/tablet-light-notes-2.png deleted file mode 100644 index 4554e20..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-notes-2.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-settings.png b/docs/screenshots/tablet-light/tablet-light-settings.png deleted file mode 100644 index 4bbdc1c..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-settings.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-shopping.png b/docs/screenshots/tablet-light/tablet-light-shopping.png deleted file mode 100644 index 1d71e37..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-shopping.png and /dev/null differ diff --git a/docs/screenshots/tablet-light/tablet-light-tasks-2.png b/docs/screenshots/tablet-light/tablet-light-tasks-2.png deleted file mode 100644 index 5276744..0000000 Binary files a/docs/screenshots/tablet-light/tablet-light-tasks-2.png and /dev/null differ diff --git a/docs/social-preview.png b/docs/social-preview.png index d7e3883..077c644 100644 Binary files a/docs/social-preview.png and b/docs/social-preview.png differ diff --git a/docs/twitter-image.png b/docs/twitter-image.png index 0b00781..8a47826 100644 Binary files a/docs/twitter-image.png and b/docs/twitter-image.png differ diff --git a/tools/generate-social-images.js b/tools/generate-social-images.js new file mode 100644 index 0000000..7a61cd6 --- /dev/null +++ b/tools/generate-social-images.js @@ -0,0 +1,120 @@ +#!/usr/bin/env node +import sharp from 'sharp'; +import { readFileSync } from 'fs'; + +const SCREENSHOT = 'docs/screenshots/01-web-light.png'; +const BG_COLOR = '#1A1A28'; + +// Social image dimensions +const DIMENSIONS = { + 'og-image.png': { width: 1200, height: 630 }, + 'twitter-image.png': { width: 1200, height: 675 }, + 'social-preview.png': { width: 1280, height: 640 } +}; + +async function createSocialImage(filename, width, height) { + // Load and resize screenshot to fit right side (60% of width) + const screenshotWidth = Math.floor(width * 0.55); + const screenshotHeight = Math.floor(height * 0.7); + + const screenshot = await sharp(SCREENSHOT) + .resize(screenshotWidth, screenshotHeight, { + fit: 'contain', + background: { r: 0, g: 0, b: 0, alpha: 0 } + }) + .toBuffer(); + + // Create SVG with text and layout + const svg = ` + + + + + + + + + + SELF-HOSTED · OPEN SOURCE + + + + + Oikos + + + + + The family planner that respects your + privacy. Tasks, calendars, shopping, meals, + budget — on your own server. + + + + + + + ✓ Tasks + + + + 📅 Calendar + + + + 🛒 Shopping + + + + 🍽 Meals + + + + + `; + + // Position screenshot on the right side + const screenshotX = width - screenshotWidth - 40; + const screenshotY = Math.floor((height - screenshotHeight) / 2); + + // Composite everything together + const image = await sharp({ + create: { + width, + height, + channels: 4, + background: BG_COLOR + } + }) + .composite([ + { + input: Buffer.from(svg), + top: 0, + left: 0 + }, + { + input: screenshot, + top: screenshotY, + left: screenshotX + } + ]) + .png() + .toFile(`docs/${filename}`); + + console.log(`✓ Created docs/${filename} (${width}x${height})`); +} + +async function main() { + console.log('Generating social preview images...\n'); + + for (const [filename, { width, height }] of Object.entries(DIMENSIONS)) { + await createSocialImage(filename, width, height); + } + + console.log('\n✓ All social images generated successfully!'); +} + +main().catch(err => { + console.error('Error:', err.message); + process.exit(1); +});