How this Web-Application Works 🌱 Molino⺢Practice · Granada · Spain
This is a dynamic web content editor solution based on Google Sheet Indexed of One Google Sheet per section and multiple Google Documents per article. It was designed mechanically in stages. As per my first publishing last week, it was slow by design, now it is as fast as it gets, blazing through my default Nextjs choice of architecture, otherwise all else still applies in this update below. Most importantly it was a fun, and very purposeful thought -> Just Do It -> design, conceive, get patterns I needed, tweak them, prompt and re-prompt very granularly per piece to get my desired result and exact pattern. And it is done. Working below
| ▲ Next.js 16.1.6 (Turbopack) |
|---|
- Environments: .env
✓ Compiled successfully in 19.0s
✓ Finished TypeScript in 20.3s
✓ Collecting page data using 7 workers in 943.0ms
✓ Generating static pages using 7 workers (58/58) in 4.3s
✓ Finalizing page optimization in 14.3ms
Route (app)
┌ ƒ /
├ ƒ / v1
├ ƒ /_not-found
├ ƒ /[section]
├ ƒ /[section]/[doc]
├ ƒ /about
├ ƒ /api/[tripId]
├ ƒ /api/admin/users
├ ƒ /api/ai/contexts
├ ƒ /api/ai/personas
├ ƒ /api/assistant/threads
├ ƒ /api/assistant/threads/[threadId]
├ ƒ /api/assistant/threads/[threadId]/messages
├ ƒ /api/auth/[...nextauth]
├ ƒ /api/devprompts
├ ƒ /api/doc
├ ƒ /api/entity-generator
├ ƒ /api/ideas/generate
├ ƒ /api/items
├ ƒ /api/partners
├ ƒ /api/projects
├ ƒ /api/projects/[projectId]
├ ƒ /api/projects/[projectId]/assets
├ ƒ /api/projects/[projectId]/assets/[assetId]
├ ƒ /api/projects/[projectId]/destroy
├ ƒ /api/projects/[projectId]/documents
├ ƒ /api/projects/[projectId]/documents/[docId]
├ ƒ /api/projects/[projectId]/experiences
├ ƒ /api/projects/[projectId]/experiences/[experienceId]
├ ƒ /api/projects/[projectId]/offers
├ ƒ /api/projects/[projectId]/offers/[offerId]
├ ƒ /api/projects/[projectId]/orders
├ ƒ /api/projects/[projectId]/orders/[orderId]
├ ƒ /api/projects/[projectId]/products
├ ƒ /api/projects/[projectId]/products/[productId]
├ ƒ /api/projects/[projectId]/sections
├ ƒ /api/projects/[projectId]/sections/[sectionId]
├ ƒ /api/projects/[projectId]/sections/ensure
├ ƒ /api/projects/[projectId]/trips
├ ƒ /api/projects/[projectId]/trips/[tripId]
├ ƒ /api/projects/trips
├ ƒ /api/projects/trips/[tripId]
├ ƒ /api/projects/trips/[tripId]/posts
├ ƒ /api/sync
├ ƒ /api/trips
├ ƒ /api/trips/[tripId]
├ ƒ /api/user/[...route]
├ ƒ /assets/poster/[assetId]
├ ƒ /assistant
├ ƒ /auth/signin
├ ƒ /authentication/signin
├ ƒ /cards
├ ƒ /cards/[slug]
├ ƒ /cards/entity-generator
├ ƒ /cards/legend
├ ƒ /codebase
├ ƒ /concept-cards
├ ƒ /concept-cards/[id]
├ ƒ /concept-cards/api/qr/[id]
├ ƒ /concept-cards/new
├ ƒ /concept-groups
├ ƒ /concept-groups/[groupId]
├ ƒ /concept-groups/new
├ ƒ /craft
├ ƒ /craft/[id]
├ ƒ /dashboard
├ ƒ /documents
├ ƒ /documents/[docId]
├ ƒ /documents/[docId]/api
├ ƒ /documents/[docId]/browse
├ ƒ /documents/api
├ ƒ /documents/components/[slug]
├ ƒ /features
├ ƒ /home
├ ƒ /home/[id]
├ ƒ /home/skills
├ ƒ /home/skills/[concept]
├ ƒ /legend
├ ƒ /magazine
├ ƒ /pdf copy/api/skill/[slug]
├ ƒ /pdf/api/skill/[slug]
├ ƒ /practice-section
├ ƒ /pricing
├ ƒ /projects
├ ƒ /projects/[projectId]
├ ƒ /projects/[projectId]/assets
├ ƒ /projects/[projectId]/assets/[assetId]
├ ƒ /projects/[projectId]/assets/new
├ ƒ /projects/[projectId]/assistant
├ ƒ /projects/[projectId]/documents
├ ƒ /projects/[projectId]/documents/[docId]
├ ƒ /projects/[projectId]/documents/api
├ ƒ /projects/[projectId]/documents/new
├ ƒ /projects/[projectId]/documents2
├ ƒ /projects/[projectId]/documents2/[docId]
├ ƒ /projects/[projectId]/documents2/[docId]/api
├ ƒ /projects/[projectId]/documents2/new
├ ƒ /projects/[projectId]/experiences/new
├ ƒ /projects/[projectId]/offers
├ ƒ /projects/[projectId]/offers/edit
├ ƒ /projects/[projectId]/offers/new
├ ƒ /projects/[projectId]/orders
├ ƒ /projects/[projectId]/orders/new
├ ƒ /projects/[projectId]/orders/test-order
├ ƒ /projects/[projectId]/posts/new
├ ƒ /projects/[projectId]/products
├ ƒ /projects/[projectId]/products/new
├ ƒ /projects/[projectId]/trips
├ ƒ /projects/[projectId]/trips/new
├ ƒ /projects/featured-trips/new
├ ƒ /session-paths
├ ƒ /session-paths/[pathId]
├ ƒ /session-stacks
├ ƒ /session-stacks/[sessionId]
├ ƒ /session-stacks/api/card-stacks
├ ƒ /session-stacks/new
├ ƒ /sponsor
├ ƒ /sponsor/[weekId]
├ ƒ /sponsor/history
├ ƒ /study-guide
├ ƒ /study-guide/[slug]
├ ƒ /study-guide/legend
├ ƒ /study-guide/mlv
├ ƒ /test-layout
├ ƒ /theme
├ ƒ /theme/posts
├ ƒ /travel
├ ƒ /travel/[id]
├ ƒ /travel/journey
├ ƒ /trips
├ ƒ /trips/[tripId]
| └ ƒ /trips/new |
npx prisma db seed
Loaded Prisma config from prisma.config.ts.
Running seed command tsx prisma/seed.ts ...
| 🚀 Starting Molino Index dynamic sync... |
|---|
🔎 Resolving Molino Index registry...
📋 Sections resolved: {
dev: '1r2u4LHqeQR0cgftyseexRli68hJO5dpHsiRPjilOGl4',
story: '1zBg3MFDW4wh8JIXOKX1seLemDRqLJkxMYyiLKfr568',
craft: '1eumuIDHjkEbn6gYyhdQfNe-QzRuVirCK02SFmw1fo8',
practice: '1vBKBz1xOJup8OOtIsGlM6V2ZQBiFXH1j6y4pjQr5xs',
experience: '1HLp6UBhnHO2QFiOXk-KpqoMTE83vNRIajKwW69YgYkY',
travel: '1ipQcIZMyhM6jGNIADQSSF0YmfLX4kM7DDzcp69HazQA',
education: '1aIg8BETewStAXPlg1glfLCJAtEnYhSi10Ebygnt8M4'
}
✅ dev: 7 ok, 0 failed
✅ story: 4 ok, 0 failed
✅ craft: 2 ok, 0 failed
✅ practice: 3 ok, 0 failed
✅ experience: 7 ok, 0 failed
✅ travel: 3 ok, 0 failed
✅ education: 7 ok, 0 failed
🏁 Molino Index sync complete.
| zaruq@Zaruqs-MacBook-Pro molino-index % |
The why is self-evident,
these sections and pages now generate from me composing and copying them to a Google Spreadsheet, so I am “re-cycling” the good engineering done on Google Dccs and Google Sheets, to leverage and save myself the time of programming such interfaces, and yet having this web application’s sections, ‘just done’ , like that, it saves me plenty of headaches further down along the line. I will probably be launching this as a downloadable tool, should I get down to adding a resources market place for this application - as scheduled over the next weeks.
