Skip to content

Update to directory - #5

Open
executiveusa wants to merge 6 commits into
nolly-studio:mainfrom
executiveusa:main
Open

Update to directory #5
executiveusa wants to merge 6 commits into
nolly-studio:mainfrom
executiveusa:main

Conversation

@executiveusa

Copy link
Copy Markdown

No description provided.

executiveusa and others added 5 commits February 13, 2025 18:08
// feat: add new directory component
//
// Please enter the commit message for your changes. Lines starting
// with '#' will be ignored, and an empty message aborts the commit.
//
// On branch main
// Your branch is up to date with 'origin/main'.
//
// Changes to be committed:
//	new file:   src/Directory.jsx
//
```git push
```
…migration support (#5)

* Initial plan

* Add Railway zero-secrets deployment files and cost guardrails

Co-authored-by: executiveusa <191772270+executiveusa@users.noreply.github.com>

* Address code review feedback for Railway deployment files

Co-authored-by: executiveusa <191772270+executiveusa@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: executiveusa <191772270+executiveusa@users.noreply.github.com>
… brand tokens

- fix(schema): added images + logo_src fields to zod schema
- fix(fallback-image): replaced broken @/assets import with URL string
- feat(hero): rebranded to Directorio Kupuri™
- feat(nav): Submit → Publicar Negocio
- feat(tailwind): Kupuri brand color tokens (sage/teal/coral/cream/gold/black)

ZTE-20260323-0006 | owner: forjadora | status: completed
Copilot AI review requested due to automatic review settings March 23, 2026 20:42

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR appears to rebrand/customize the directory template for “Kupuri Media™”, add a Supabase “businesses” schema + assorted planning docs, and introduce deployment/ops scaffolding (Railway/Coolify/maintenance page + an auto-deploy GitHub Actions workflow).

Changes:

  • UI/branding updates (Hero + Nav text, Tailwind palette, image fallback behavior).
  • Adds multiple operational/deployment artifacts (Railway config, maintenance page, Coolify docs, GitHub Actions auto-deploy workflow).
  • Adds Supabase-related schema/docs plus several “agent automation”/task prompt documents and editor config files.

Reviewed changes

Copilot reviewed 34 out of 36 changed files in this pull request and generated 22 comments.

Show a summary per file
File Description
tasks.md Adds task checklist/planning doc for building the directory.
tailwind.config.ts Adds “Kupuri Media™” brand color palette.
src/server.js Adds an Express+Supabase API server (currently not integrated with repo scripts/deps).
src/Directory.jsx Adds a React directory page (appears incomplete/unwired for this Next.js repo).
settings.jsonc Adds root-level Copilot/editor configuration.
seo-optimization.md Adds SEO task checklist doc.
README.md Adds setup instructions + “autonomous agent” instructions section.
railway.toml Adds Railway build/deploy configuration + resource guardrails.
public/maintenance.html Adds a static maintenance mode page.
monetization-and-tracking.md Adds monetization/tracking task checklist doc.
meta-prompt.md Adds a large “meta-prompt” document containing code snippets and process instructions.
import React from 'react';.js Adds an example React component file with an irregular filename.
DIRECTORY ALPHA.jsonc Adds additional Copilot/editor config (root-level).
db/supabase/client.ts Changes Supabase browser client implementation.
db/schema.sql Adds SQL schema for businesses table.
COOLIFY_SUPPORT.md Adds Coolify deployment scaffolding documentation (placeholders).
COOLIFY_MIGRATION.md Adds Coolify migration checklist document.
components/nav.tsx Updates Nav CTA copy to Spanish (“Publicar Negocio”).
components/hero.tsx Rebrands hero content and external link.
components/cult/fallback-image.tsx Switches fallback image from local asset to remote URL.
automate-data-collection.md Adds Apify/Google Maps automation checklist doc.
automate-content-generation.md Adds AI content generation automation checklist doc.
app/submit/schema.ts Updates Zod validation schema for submit flow.
app/submit/ai-enrichment-prompt.ts Adds helper to generate AI enrichment prompt.
ai-automation-agents.md Adds AI automation agent checklist doc.
# Project Title.md Adds placeholder project setup doc with unconventional filename.
# Code Citations.md Adds code citation snippets with unconventional filename.
.snapshots/sponsors.md Adds Snapshots tool sponsor/readme content (includes typo).
.snapshots/readme.md Adds Snapshots directory description.
.snapshots/config.json Adds Snapshots configuration file.
.gitignore Adds ignore rule for master.secrets.json (and adjusts storage path ignore).
.github/workflows/zte-autodeploy.yml Adds a complex auto-deploy workflow with external code execution + auto-merge.
.emerald-tablets-tm/PRIME_DIRECTIVE.md Adds “Emerald Tablets” directive document.
.beads/config.yaml Adds Beads tracker config.
.agents Adds a secret-specification file describing required env vars and modules.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread db/supabase/client.ts
Comment on lines +1 to +7
import { createClient as createSupabaseClient } from "@supabase/supabase-js";

export const createClient = () =>
createBrowserClient(
export function createClient() {
return createSupabaseClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)
);

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Switching the browser client from @supabase/ssr's createBrowserClient to @supabase/supabase-js's plain createClient will change auth/session storage behavior (default localStorage vs cookie-based). In this codebase the server client/middleware use @supabase/ssr cookie handling, so this change can break SSR/server components reading the user session. Revert to createBrowserClient (or configure the client to use cookie storage) to keep client/server auth consistent.

Copilot uses AI. Check for mistakes.
Comment on lines +6 to +7
// Kupuri Media placeholder — no local asset needed
const placeholderImg = "https://placehold.co/400x400/edf1e8/9bc1bc?text=K"

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

placeholderImg is a remote URL (placehold.co) used as the src for next/image, but next.config.js currently only allows **.supabase.co in images.remotePatterns. This will cause runtime image errors when the fallback is rendered. Either add an explicit remotePatterns entry for placehold.co (recommended) or switch the fallback to a local asset / unoptimized image.

Suggested change
// Kupuri Media placeholder — no local asset needed
const placeholderImg = "https://placehold.co/400x400/edf1e8/9bc1bc?text=K"
// Kupuri Media placeholder — inline SVG data URI to avoid remote domain issues
const placeholderImg =
"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='400'%3E%3Crect width='100%25' height='100%25' fill='%23edf1e8'/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%239bc1bc' font-size='120' font-family='system-ui, -apple-system, BlinkMacSystemFont, sans-serif'%3EK%3C/text%3E%3C/svg%3E"

Copilot uses AI. Check for mistakes.

interface ImageWithFallbackProps extends Omit<ImageProps, "src"> {
fallback?: string
fallback?: string | typeof placeholderImg

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fallback?: string | typeof placeholderImg type is effectively just string because placeholderImg is a string constant. Consider simplifying this to fallback?: string to avoid confusing/duplicated typing.

Suggested change
fallback?: string | typeof placeholderImg
fallback?: string

Copilot uses AI. Check for mistakes.
Comment thread app/submit/schema.ts
description: z.string().min(1, "Description is required"),
categories: z.string().min(1, "Category is required"),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
images: z.array(z.any()).optional().default([]),

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

images is now validated as an array (z.array(...)), but the submit action builds data via Object.fromEntries(formData.entries()), which will produce a single File value for images (or a single string), not an array. This makes form submissions fail validation whenever an image is provided. Align the schema with the actual FormData shape (e.g., accept File/undefined, or use formData.getAll('images') and validate that array).

Suggested change
images: z.array(z.any()).optional().default([]),
images: z.any().optional(),

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +9
export function getAIEnrichmentPrompt(codename: string, categories: string, description: string) {
return `
Codename: ${codename}
Categories: ${categories}
Description: ${description}

Generate tags and labels for the above product.
`;
}

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getAIEnrichmentPrompt is introduced here, but nothing imports it. The submit server action currently calls getAIEnrichmentPrompt(...) without an import, which will fail at build time. Import this function where it’s used (or move it into the calling module) and ensure it’s included in the module graph.

Copilot uses AI. Check for mistakes.
Comment on lines +336 to +344
- name: Create PR + auto-merge
run: |
gh pr create \
--title "[ZTE][${{ env.BEAD_ID }}] ✅ ${{ github.ref_name }} → main" \
--body "All ZTE checks green. Emerald Tablets cert: ✅. Live: ${{ needs.vercel_deploy.outputs.preview_url }}" \
--base main --head "${{ github.ref_name }}" 2>/dev/null || true
gh pr merge --squash --auto --delete-branch \
--subject "[ZTE][${{ env.BEAD_ID }}] ✅ auto-merged" \
"${{ github.ref_name }}" 2>/dev/null || echo "Merge queued"

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The auto_merge job creates and merges PRs automatically for any non-main branch once the workflow passes. This is risky for normal development workflows and can bypass required reviews/branch protections if the PAT has sufficient permissions. Recommend removing auto-merge entirely (or gating it behind a protected environment + manual approval and explicit allowlist of branches).

Suggested change
- name: Create PR + auto-merge
run: |
gh pr create \
--title "[ZTE][${{ env.BEAD_ID }}] ✅ ${{ github.ref_name }} → main" \
--body "All ZTE checks green. Emerald Tablets cert: ✅. Live: ${{ needs.vercel_deploy.outputs.preview_url }}" \
--base main --head "${{ github.ref_name }}" 2>/dev/null || true
gh pr merge --squash --auto --delete-branch \
--subject "[ZTE][${{ env.BEAD_ID }}] ✅ auto-merged" \
"${{ github.ref_name }}" 2>/dev/null || echo "Merge queued"
- name: Create PR
run: |
gh pr create \
--title "[ZTE][${{ env.BEAD_ID }}] ✅ ${{ github.ref_name }} → main" \
--body "All ZTE checks green. Emerald Tablets cert: ✅. Live: ${{ needs.vercel_deploy.outputs.preview_url }}" \
--base main --head "${{ github.ref_name }}" 2>/dev/null || true

Copilot uses AI. Check for mistakes.
Comment thread .snapshots/sponsors.md
## Ways to Support

### Join the GBTI Network!!! 🙏🙏🙏
The GBTI Network is a community of developers who are passionate about open source and community-driven development. Members enjoy access to exclussive tools, resources, a private MineCraft server, a listing in our members directory, co-op opportunities and more.

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling: "exclussive" should be "exclusive".

Suggested change
The GBTI Network is a community of developers who are passionate about open source and community-driven development. Members enjoy access to exclussive tools, resources, a private MineCraft server, a listing in our members directory, co-op opportunities and more.
The GBTI Network is a community of developers who are passionate about open source and community-driven development. Members enjoy access to exclusive tools, resources, a private MineCraft server, a listing in our members directory, co-op opportunities and more.

Copilot uses AI. Check for mistakes.
Comment thread # Project Title.md
Comment on lines +1 to +3
# Project Title

// ...existing code...

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The filename # Project Title.md (leading # and spaces) is likely accidental and can cause cross-platform issues and awkward linking in docs. Consider renaming it to something conventional (e.g., PROJECT_TITLE.md or PROJECT_SETUP.md) or removing it if it’s a placeholder.

Copilot uses AI. Check for mistakes.
Comment thread # Code Citations.md
Comment on lines +1 to +5
# Code Citations

## License: MIT
https://github.com/dikshaTomar/helloworld/tree/1dbc240420260f0ecfef1065dfed045aaac11798/.github/workflows/main.yml

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The filename # Code Citations.md (leading # and spaces) is unconventional and may cause tooling/linking issues. If this file is needed, consider renaming it to a standard doc name (e.g., CODE_CITATIONS.md) and ensure it’s referenced from the README so it doesn’t become orphaned.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +18
# ◈ EMERALD TABLETS™ — Prime Directive v1.0
> Installed at system root: `c:\kupuri-media-cdmx\.emerald-tablets-tm\`
> Applies to ALL agents, ALL sessions, ALL repos in this workspace.

---

## TABLET I — THE HUMAN-AI TRUTH

```
The human is the author. The AI is the executor.
Every action must serve the human's intent — not the AI's interpretation of it.
When uncertain: ASK once, then ship the minimal working version.
When blocked: surface the blocker. Never loop silently.
```

**Corollary:** No agent shall substitute their judgment for Ivette's priorities.
When Ivette says "build X," agents build X — not X plus their idea of Y.

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This document hardcodes a local Windows path (c:\...) and references a specific individual (“Ivette”) as a universal priority authority. If this repo is meant for broader collaboration or open source, consider removing personal/local-machine references or moving them to private/internal documentation to avoid leaking internal context and confusing contributors.

Copilot uses AI. Check for mistakes.
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants