A directory for MeshCore contact details, allowing users to find each other
| .claude | ||
| prisma | ||
| src | ||
| static | ||
| .dockerignore | ||
| .gitignore | ||
| .npmrc | ||
| ARCHITECTURE.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| docker-compose.yml | ||
| docker-entrypoint.sh | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| PRODUCT.md | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
MC Yellow Pages
A MeshCore public key registry where users can register and look up MeshCore public keys.
Tech Stack
- SvelteKit — Full-stack framework
- TypeScript — Type safety
- Tailwind CSS — Styling
- Prisma — ORM with SQLite database
Getting Started
Prerequisites
- Node.js 18+
- npm
Setup
# Install dependencies
npm install
# Generate Prisma client
npx prisma generate
# Run database migrations
npx prisma migrate dev
# Start dev server
npm run dev
The app will be available at http://localhost:5173.
Database
The project uses SQLite, stored locally as prisma/dev.db.
# View database in browser
npx prisma studio
# Create a new migration after editing schema.prisma
npx prisma migrate dev --name <migration_name>
Project Structure
src/
├── lib/
│ ├── server/
│ │ └── prisma.ts # Prisma client instance
│ └── validation.ts # Public key validation
├── routes/
│ ├── +layout.svelte # App layout with nav
│ ├── +page.svelte # Browse / search directory
│ ├── +page.server.ts # Directory data loading
│ └── register/
│ ├── +page.svelte # Registration form
│ └── +page.server.ts # Form action (validation + insert)
├── app.css # Tailwind CSS
└── app.html # HTML shell
prisma/
├── schema.prisma # Database schema
└── migrations/ # Migration history
Features
- Register a MeshCore public key with display name, location, and description
- Browse all registered keys
- Search by name, key, location, or description
- Validation of 64-character hex public keys (client + server)
- Duplicate detection — prevents registering the same key twice