Set up Siteforge container deployment and registry publishing

This commit is contained in:
Nate Emmert
2026-03-17 15:15:33 -04:00
commit 695f124afe
27 changed files with 6432 additions and 0 deletions
+268
View File
@@ -0,0 +1,268 @@
export type Ownership = 'built' | 'hosted'
export type Project = {
slug: string
title: string
domain: string
url: string
category: string
access: 'Public' | 'Login required' | 'Mixed'
iconUrl?: string
ownership: Ownership
status: 'Live'
summary: string
details: string
features: string[]
scanSource: 'scanned' | 'manual'
featured: {
headline: string
problem: string
solution: string
stack: string[]
highlights: string[]
nextSteps: string[]
updateNote: string
}
}
export const projects: Project[] = [
{
slug: 'weather',
title: 'NeCloud Weather',
domain: 'weather.necloud.us',
url: 'https://weather.necloud.us',
category: 'Weather',
access: 'Public',
ownership: 'built',
status: 'Live',
summary: 'Weather dashboard with hourly forecasts, radar, and practical daily details.',
details:
'The homepage highlights Open-Meteo and RainViewer data, current conditions, high/low, daylight windows, and quick bring-along suggestions.',
features: ['Hourly forecast', 'Radar view', 'Wind and atmosphere panel'],
scanSource: 'scanned',
featured: {
headline: 'Fast weather checks with useful details at a glance.',
problem:
'Most weather tools either feel too basic or too noisy when you only want quick, actionable updates.',
solution:
'NeCloud Weather combines clean current conditions, practical recommendation blocks, and rapid forecast scanning in one view.',
stack: ['React', 'TypeScript', 'Open-Meteo', 'RainViewer'],
highlights: ['Location search', 'Hero weather card', '24-hour timeline', 'Radar shortcut'],
nextSteps: ['Add severe weather alerts', 'Save favorite locations', 'Add sunrise trend charts'],
updateNote: 'Edit this content in src/data/projects.ts under the weather project.',
},
},
{
slug: 'capsule',
title: 'Capsule',
domain: 'capsule.necloud.us',
url: 'https://capsule.necloud.us',
category: 'Finance',
access: 'Mixed',
iconUrl: 'https://capsule.necloud.us/images/capsule-logo.svg',
ownership: 'built',
status: 'Live',
summary: 'Smart envelope budgeting app focused on planning and income allocation.',
details:
'The site presents guided setup, envelope-based spending controls, and paycheck auto-allocation to keep budgets structured.',
features: ['Envelope budgeting', 'Income auto-allocation', 'Offline-ready data'],
scanSource: 'scanned',
featured: {
headline: 'A practical budgeting workflow built around envelope control.',
problem:
'Traditional budget tools can feel rigid or overwhelming for everyday spending decisions.',
solution:
'Capsule uses guided setup and smart allocation so users can organize spending with clear envelope categories.',
stack: ['React', 'TypeScript', 'Local-first storage'],
highlights: ['Guided setup wizard', 'Envelope categories', 'Auto-allocation rules'],
nextSteps: ['Add recurring bill templates', 'Import transaction feeds', 'Monthly budget snapshots'],
updateNote: 'Edit this content in src/data/projects.ts under the capsule project.',
},
},
{
slug: 'nexusbible',
title: 'Nexus Bible',
domain: 'nexusbible.necloud.us',
url: 'https://nexusbible.necloud.us',
category: 'Study',
access: 'Mixed',
ownership: 'built',
status: 'Live',
summary: 'Bible reader for reading, comparison, and study using Free Use Bible API data.',
details:
'The app exposes navigation, reader controls, bookmarks, and daily-focus tooling to support regular scripture study.',
features: ['Reader modes', 'Bookmarks', 'Daily focus workflow'],
scanSource: 'scanned',
featured: {
headline: 'Scripture reading designed for depth, rhythm, and clarity.',
problem:
'Switching between apps for reading, comparison, and planning breaks study flow.',
solution:
'Nexus Bible unifies reader tools, bookmarks, and daily focus controls for a single focused study experience.',
stack: ['React', 'TypeScript', 'Free Use Bible API'],
highlights: ['Reader mode', 'Passage navigation', 'Bookmarks', 'Daily focus entry points'],
nextSteps: ['Add multi-translation compare view', 'Personal note collections', 'Reading streak tracking'],
updateNote: 'Edit this content in src/data/projects.ts under the nexusbible project.',
},
},
{
slug: 'prayer',
title: 'Haver',
domain: 'prayer.necloud.us',
url: 'https://prayer.necloud.us',
category: 'Faith',
access: 'Mixed',
ownership: 'built',
status: 'Live',
summary: 'Prayer journal app for daily entries, requests, and answered-prayer tracking.',
details:
'Landing content emphasizes a minimalist prayer workflow with dashboards, calendar history, and Google Calendar reminder sync.',
features: ['Prayer journal', 'Prayer dashboard', 'Calendar integration'],
scanSource: 'scanned',
featured: {
headline: 'A calm daily prayer workflow with meaningful tracking.',
problem:
'Prayer journaling often lives across scattered notes and reminders, making consistency difficult.',
solution:
'Haver centralizes requests, daily entries, answered prayers, and reminder sync into one simple interface.',
stack: ['React', 'Firebase', 'Google Calendar integration'],
highlights: ['Prayer composer', 'Answered prayer tracking', 'Calendar view', 'Reminder sync'],
nextSteps: ['Add shared prayer groups', 'Voice prayer entry', 'Weekly summary digest'],
updateNote: 'Edit this content in src/data/projects.ts under the prayer project.',
},
},
{
slug: 'skywatch',
title: 'Skywatch',
domain: 'skywatch.necloud.us',
url: 'https://skywatch.necloud.us',
category: 'Sky and Space',
access: 'Public',
ownership: 'built',
status: 'Live',
summary: 'Skywatch project in your NeCloud stack.',
details:
'Live page content could not be scanned automatically because the endpoint responded with 401; this entry is currently a manual placeholder.',
features: ['Manual metadata fallback', 'Live endpoint available via domain'],
scanSource: 'manual',
featured: {
headline: 'Skywatch project overview placeholder.',
problem: 'Automated scanning could not access this project because the endpoint returned 401.',
solution:
'This featured page is intentionally editable so you can replace placeholder copy with your exact app details.',
stack: ['Update manually'],
highlights: ['Placeholder content', 'Manual metadata fallback'],
nextSteps: ['Add full description', 'Add stack details', 'Add feature highlights'],
updateNote: 'Edit this content in src/data/projects.ts under the skywatch project.',
},
},
{
slug: 'spellinghub',
title: 'Spelling Hub',
domain: 'spellinghub.necloud.us',
url: 'https://spellinghub.necloud.us',
category: 'Education',
access: 'Mixed',
ownership: 'built',
status: 'Live',
summary: 'Modern spelling practice application with account-based learning flows.',
details:
'Homepage messaging presents a clean practice platform with login and registration for user progress.',
features: ['Practice workflows', 'User auth', 'Simple home dashboard'],
scanSource: 'scanned',
featured: {
headline: 'Focused spelling practice with lightweight account flow.',
problem:
'Many spelling tools are cluttered and do not support structured, repeatable daily practice.',
solution:
'Spelling Hub keeps onboarding simple and centers the product on practical, repeatable learning loops.',
stack: ['React', 'TypeScript', 'Auth-backed workflow'],
highlights: ['Login/register flow', 'Practice-first design', 'Simple navigation'],
nextSteps: ['Add custom word lists', 'Teacher/student modes', 'Progress analytics dashboard'],
updateNote: 'Edit this content in src/data/projects.ts under the spellinghub project.',
},
},
{
slug: 'mealie',
title: 'Mealie',
domain: 'mealie.necloud.us',
url: 'https://mealie.necloud.us',
category: 'Self-hosted Tools',
access: 'Mixed',
ownership: 'hosted',
status: 'Live',
summary: 'Self-hosted recipe manager with categories, tags, and kitchen planning tools.',
details:
'Scanned content confirms a full Mealie interface with home feed, recipe browsing, and account login flow.',
features: ['Recipe library', 'Tags and categories', 'User login'],
scanSource: 'scanned',
featured: {
headline: 'Recipe organization and planning through your self-hosted stack.',
problem:
'Recipe collections get scattered across browser bookmarks and notes without centralized organization.',
solution:
'Your Mealie instance provides structured categories, tags, and searchable recipes for day-to-day meal planning.',
stack: ['Mealie', 'Self-hosted deployment'],
highlights: ['Recipe catalog', 'Category and tag views', 'Account login'],
nextSteps: ['Add meal plan snapshots', 'Import bookmark recipes', 'Shopping list workflows'],
updateNote: 'Edit this content in src/data/projects.ts under the mealie project.',
},
},
{
slug: 'music',
title: 'Swing Music',
domain: 'music.necloud.us',
url: 'https://music.necloud.us',
category: 'Self-hosted Tools',
access: 'Mixed',
ownership: 'hosted',
status: 'Live',
summary: 'Self-hosted music streaming interface with folders, playlists, and favorites.',
details:
'Homepage scan identifies Swing Music with library navigation, playlists, favorites, and guest/standard access options.',
features: ['Library browsing', 'Playlists', 'Guest mode'],
scanSource: 'scanned',
featured: {
headline: 'Swing Music streaming from your own infrastructure.',
problem:
'Centralized music services can limit control over personal libraries and hosting preferences.',
solution:
'Your Swing Music instance provides library browsing, playlists, and favorites with local hosting control.',
stack: ['Swing Music', 'Self-hosted deployment'],
highlights: ['Library navigation', 'Playlist support', 'Favorites', 'Guest mode'],
nextSteps: ['Improve mobile now-playing UI', 'Add listening history', 'Playlist sharing links'],
updateNote: 'Edit this content in src/data/projects.ts under the music project.',
},
},
{
slug: 'seafile',
title: 'Seafile Instance',
domain: 'seafile.necloud.us',
url: 'https://seafile.necloud.us',
category: 'Self-hosted Tools',
access: 'Login required',
iconUrl: 'https://seafile.necloud.us/media/custom/mylogo.png',
ownership: 'hosted',
status: 'Live',
summary: 'Your self-hosted Seafile instance for secure sync, sharing, and account-based access.',
details:
'Scanned landing view exposes the Seafile login portal with account signup and password reset features.',
features: ['File sync platform', 'Account login', 'Password recovery'],
scanSource: 'scanned',
featured: {
headline: 'A private file sync and sharing system you host yourself.',
problem:
'Cloud storage options often reduce control over data location and account governance.',
solution:
'Your Seafile instance gives you direct ownership of file sync, sharing access, and user account management.',
stack: ['Seafile', 'Self-hosted deployment'],
highlights: ['Secure login', 'Account management', 'Password reset flow'],
nextSteps: ['Add team spaces', 'Automated backup checks', 'Storage usage dashboard'],
updateNote: 'Edit this content in src/data/projects.ts under the seafile project.',
},
},
]
export function getProjectBySlug(slug: string): Project | undefined {
return projects.find((project) => project.slug === slug)
}