WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Build constructed languages with instant feedback: sounds, words, scripts, and grammar.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Build constructed languages with instant feedback.
A modern web app for creating, testing, and sharing conlangs (constructed languages). Define sounds, build vocabulary, generate words deterministically, and see your language come to life.
Creating a constructed language is complex. You need to define phonology, build vocabulary, ensure consistency, and test how it sounds. Conlang makes this process interactive and immediate:
Visit conlang.app — no installation needed.
# Clone the repo
git clone https://github.com/coreyhaines31/conlang.git
cd conlang
# Install dependencies
npm install
# Set up environment (see Configuration below)
cp .env.example .env.local
# Run development server
npm run dev
Copy .env.example to .env.local and fill it in:
| Variable | Required | Purpose |
|---|---|---|
DATABASE_URL | Yes | Postgres connection string (Neon works well) |
BETTER_AUTH_SECRET | Yes | Session signing secret (openssl rand -base64 32) |
BETTER_AUTH_URL | Yes | App URL, http://localhost:3001 locally |
RESEND_API_KEY | Yes | Sends magic-link sign-in emails via Resend |
SUPPORT_EMAIL | Yes | Inbox for the in-app support form |
CRON_SECRET | No | Protects /api/cron/keep-alive |
NEXT_PUBLIC_SENTRY_DSN | No | Client error reporting |
AI_GATEWAY_API_KEY | No | Vercel AI Gateway key for AI glyph generation and e2e AI steps (not needed on Vercel, which uses OIDC) |
GLYPH_MODEL | No | Override the glyph model with any vision-capable AI Gateway model ID |
Signed-out visitors keep languages as local drafts in the browser, so you can explore most of the editor before setting up email.
The schema lives in src/lib/db/schema.ts (Drizzle). Push it to an empty database:
export DATABASE_URL=postgres://...
npx drizzle-kit push
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS v4 |
| Components | shadcn/ui + Lucide Icons |
| Database | Neon Postgres + Drizzle ORM |
| Auth | Better Auth (magic links via Resend) |
| AI | Vercel AI Gateway + AI SDK (optional, glyph generation) |
| Testing | Vitest, e2e |
| Hosting | Vercel |
src/
├── app/
│ ├── page.tsx # Main editor
│ ├── actions.ts # Server actions (DB operations)
│ ├── api/auth/[...all]/ # Better Auth handler
│ ├── api/glyph/route.ts # AI glyph generation
│ └── l/[slug]/page.tsx # Public language view
├── components/
│ ├── LanguageEditor.tsx # Main editor shell
│ ├── EditorNavigation.tsx # Sidebar navigation
│ ├── GlyphCanvas.tsx # Drawing canvas for glyphs
│ ├── tabs/ # Feature tabs
│ │ ├── OverviewTab.tsx # Word generation
│ │ ├── PhonologyTab.tsx # Consonants/vowels
│ │ ├── PhonotacticsTab.tsx # Syllable structure
│ │ ├── OrthographyTab.tsx # Spelling rules
│ │ ├── LexiconTab.tsx # Vocabulary
│ │ ├── ScriptTab.tsx # Custom writing system
│ │ ├── MorphologyTab.tsx # Grammar
│ │ └── ...
│ └── ui/ # shadcn/ui components
└── lib/
├── generator.ts # Seeded word generation
├── morphology.ts # Affix system
├── script.ts # Writing system utilities
├── textGenerator.ts # Gloss → conlang
├── auth.ts # Better Auth config
└── db/ # Drizzle client & schema
tests/ # e2e browser tests
Core language definitions with JSON configuration.
| Column | Type | Description |
|---|---|---|
| id | UUID | Primary key |
| user_id | UUID | Owner |
| name | TEXT | Language name |
| slug | TEXT | URL-safe identifier |
| is_public | BOOLEAN | Visibility |
| seed | BIGINT | RNG seed for determinism |
| definition | JSONB | Full configuration |
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗