Skip to content

Commit fad7e51

Browse files
authored
Merge pull request #1 from wesleylhandy/001-skitso-platform
Initialize Skitso Platform MVP
2 parents 9a507f9 + 4d271b2 commit fad7e51

File tree

239 files changed

+47682
-3461
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

239 files changed

+47682
-3461
lines changed

.cursor/rules/specify-rules.mdc

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# skitso Development Guidelines
2+
3+
Auto-generated from all feature plans. Last updated: 2026-01-19
4+
5+
## Active Technologies
6+
7+
- (001-skitso-platform)
8+
9+
## Project Structure
10+
11+
```text
12+
src/
13+
tests/
14+
```
15+
16+
## Commands
17+
18+
# Add commands for
19+
20+
## Code Style
21+
22+
: Follow standard conventions
23+
24+
## Recent Changes
25+
26+
- 001-skitso-platform: Added
27+
28+
<!-- MANUAL ADDITIONS START -->
29+
<!-- MANUAL ADDITIONS END -->

.env.example

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# OpenAI API Configuration
2+
OPENAI_API_KEY=your_openai_api_key_here
3+
OPENAI_MODEL_CHARACTER=gpt-5-mini
4+
OPENAI_MODEL_SCRIPT=gpt-5-mini
5+
OPENAI_MODEL_IMAGE_PROMPT=gpt-image-1.5
6+
7+
# Application URL
8+
# Used for generating shareable session links (e.g., https://skitso.app/join/F1NMp8GR)
9+
# Development: http://localhost:3000
10+
# Production: https://skitso.app (or your production domain)
11+
NEXT_PUBLIC_APP_URL=http://localhost:3000
12+
13+
# PartyKit Configuration
14+
# Local development: Use localhost:1999 (PartyKit dev server default port)
15+
# Production: Use your deployed PartyKit host URL (e.g., https://skitso.[username].partykit.dev)
16+
# NEXT_PUBLIC_PARTYKIT_HOST=localhost:1999
17+
# NEXT_PUBLIC_PARTYKIT_HOST=https://skitso.[username].partykit.dev
18+
19+
# PartyKit Token (CI/CD only - not needed for local development)
20+
# Generate using: npx partykit token generate
21+
# Store in GitHub Secrets for automated deployments
22+
# PARTYKIT_TOKEN=your_partykit_token_here
23+
24+
# Cloudinary (character image storage: upload 512x512, compress, delete on room close)
25+
# Get credentials: https://console.cloudinary.com → API Keys
26+
# Required for Cloudinary; images fall back to data URLs / DALL·E URLs if unset.
27+
CLOUDINARY_CLOUD_NAME=your_cloud_name
28+
CLOUDINARY_API_KEY=your_api_key
29+
CLOUDINARY_API_SECRET=your_api_secret
30+
# Root folder (default: skitso). Match the folder in your upload preset.
31+
# SessionIds are subfolders: root/sessionId (e.g. skitso/abc123/char-0).
32+
# CLOUDINARY_ROOT_FOLDER=skitso
33+
# Upload preset from Console → Upload → Upload presets. Preset defines root folder;
34+
# we use root/sessionId for each room. Set folder = "skitso" (or same as ROOT_FOLDER) in preset.
35+
# CLOUDINARY_UPLOAD_PRESET=your_preset
36+
37+
# Internal API secret (PartyKit → Next.js delete-session hook)
38+
# When a session expires, PartyKit calls POST /api/cloudinary/delete-session.
39+
# Set a random string; use the same value in Next.js and PartyKit env.
40+
# INTERNAL_API_SECRET=your_random_secret
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Deploy PartyKit Server
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "parties/**"
9+
- "partykit.json"
10+
- ".github/workflows/deploy-partykit.yml"
11+
12+
jobs:
13+
deploy:
14+
name: Deploy to PartyKit
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@v4
20+
21+
- name: Set up Node.js
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: "24"
25+
cache: "npm"
26+
27+
- name: Install dependencies
28+
run: npm ci
29+
30+
- name: Deploy to PartyKit
31+
run: npx partykit deploy
32+
env:
33+
PARTYKIT_LOGIN: ${{ secrets.PARTYKIT_LOGIN }}
34+
PARTYKIT_TOKEN: ${{ secrets.PARTYKIT_TOKEN }}
35+
36+
- name: Deployment status
37+
run: |
38+
echo "✅ PartyKit server deployed successfully"
39+
echo "PartyKit host: https://skitso.${{ secrets.PARTYKIT_LOGIN }}.partykit.dev"

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,7 @@ next-env.d.ts
6666
packages/database/prisma/migrations/
6767

6868
# specstory
69-
.specstory
69+
.specstory
70+
71+
# partykit
72+
.partykit/

.specify/memory/constitution.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Follow-up TODOs: None
1414

1515
# Skitso Project Constitution
1616

17-
**Version:** 1.0.0
17+
**Version:** 1.0.1
1818
**Ratification Date:** 2025-01-27
1919
**Last Amended:** 2025-01-27
2020

@@ -152,7 +152,7 @@ This constitution establishes the foundational principles, technical standards,
152152
- **Framework:** Next.js 16+ (App Router) deployed on Vercel
153153
- **Styling:** Tailwind CSS v4 with CSS Variables for theming
154154
- **State Management:** Jotai with `atomWithStorage` for persistence
155-
- **AI Engine:** OpenAI API (GPT-4o for scripts/archetypes, DALL-E 3 for character art)
155+
- **AI Engine:** OpenAI API (GPT-4o for scripts/archetypes, gpt-image-1.5 for character art)
156156
- **Database/ORM (Post-MVP):** PostgreSQL with Prisma (schema migration ready)
157157
- **Type Safety:** TypeScript 5+ with strict mode
158158

@@ -190,6 +190,7 @@ VibeContext MUST support at minimum:
190190
- `INDIE_A24`: Cinematic, artistic, nuanced dialogue
191191
- `SITCOM_STUDIO`: Classic TV comedy timing and structure
192192
- `BRAINROT_THEATER`: Absurdist, meme-heavy, chaotic energy
193+
- `QUIET_STUDIO`: Professional minimalist, anti-cringe, clean productivity tool
193194

194195
---
195196

@@ -214,6 +215,7 @@ VibeContext MUST support at minimum:
214215

215216
### Version History
216217

218+
- **1.0.1** (2025-01-27): Added QUIET_STUDIO to VibeContext types (constitution alignment fix)
217219
- **1.0.0** (2025-01-27): Initial constitution ratification
218220

219221
---

0 commit comments

Comments
 (0)