MCPcopy
hub / github.com/Nutlope/self.so

github.com/Nutlope/self.so @main sqlite

repository ↗ · DeepWiki ↗
195 symbols 651 edges 127 files 1 documented · 1%
README

Self

Self

An open source personal site builder. Powered by Together.ai.

Tech stack

  • Together.ai for the LLM
  • Vercel's AI SDK as the LLM framework
  • Clerk for authentication
  • Next.js app router
  • Helicone for observability
  • S3 for object storage (PDFs)
  • Upstash redis for my DB
  • Vercel for hosting

How it works

  1. Create an account on the site with Clerk
  2. Upload a PDF which gets uploaded to S3 and does a safety check with Llama Guard
  3. Send the PDF as context to Qwen3 Coder Next to extract out relevant information with structured outputs (JSON mode)
  4. Get all the information & put it on a dynamic route for the user to be able to view & publish their site

Cloning & running

  1. Fork or clone the repo
  2. Create an account at Together AI for the LLM
  3. Create an account at Upstash for the Redis DB
  4. Create an account at AWS for the S3 bucket
  5. Create a .env (use the .example.env for reference) and replace the API keys
  6. Run pnpm install and pnpm run dev to install dependencies and run locally

Running Tests Locally

# Run all tests
pnpm test:run

# Run tests with UI
pnpm test:ui

# Run tests in watch mode
pnpm test

Future tasks

  • [ ] add error logging to make sure to fix any bugs
  • [ ] add ability to get to the "preview" page if you have a site already
  • [ ] ability to edit links in the site
  • [ ] ability to edit any section in the site
  • [ ] add themes that you can toggle on (start with ghibli)
  • [ ] Delete previously uploaded resume when we upload a new one

Extension points exported contracts — how you extend this code

LoadingFallbackProps (Interface)
(no doc)
components/LoadingFallback.tsx
UsernameEditorContentProps (Interface)
(no doc)
components/UsernameEditorView.tsx
SocialButtonProps (Interface)
(no doc)
components/resume/Header.tsx
DateRangePickerProps (Interface)
(no doc)
components/ui/date-range-picker.tsx
State (Interface)
(no doc)
hooks/use-toast.ts
ModelPricing (Interface)
(no doc)
__tests__/benchmarkModels.ts
SkillsProps (Interface)
(no doc)
components/resume/Skills.tsx
BlurFadeProps (Interface)
(no doc)
components/ui/BlurFade.tsx

Core symbols most depended-on inside this repo

cn
called by 209
lib/utils.ts
normalizeDate
called by 8
components/resume/editing/editingFormUtils.ts
generateResumeObject
called by 7
lib/server/ai/generateResumeObject.ts
getYear
called by 6
components/resume/resumeUtils.ts
dispatch
called by 5
components/ui/use-toast.ts
getSelfSoUrl
called by 5
lib/utils.ts
getResume
called by 5
lib/server/redisActions.ts
dispatch
called by 5
hooks/use-toast.ts

Shape

Function 171
Interface 24

Languages

TypeScript100%

Modules by API surface

lib/server/redisActions.ts9 symbols
hooks/use-toast.ts9 symbols
components/ui/use-toast.ts9 symbols
hooks/useUserActions.tsx8 symbols
app/(private)/preview/client.tsx7 symbols
components/ui/pagination.tsx5 symbols
components/resume/Header.tsx5 symbols
components/UsernameEditorView.tsx5 symbols
__tests__/benchmarkModels.ts5 symbols
components/ui/date-range-picker.tsx4 symbols
components/ui/sheet.tsx3 symbols
components/ui/drawer.tsx3 symbols

Dependencies from manifests, versioned

@ai-sdk/togetherai2.0.45 · 1×
@clerk/clerk-sdk-node5.1.6 · 1×
@clerk/nextjs7.2.2 · 1×
@hookform/resolvers3.9.1 · 1×
@radix-ui/react-accordion1.2.2 · 1×
@radix-ui/react-alert-dialog1.1.4 · 1×
@radix-ui/react-aspect-ratio1.1.1 · 1×
@radix-ui/react-avatar1.1.2 · 1×
@radix-ui/react-checkbox1.1.3 · 1×
@radix-ui/react-collapsible1.1.2 · 1×
@radix-ui/react-context-menu2.2.4 · 1×
@radix-ui/react-dialog1.1.4 · 1×

For agents

$ claude mcp add self.so \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact