Survival LLM
인터넷 없이도 동작하는 무료 AI 어시스턴트와 150만 건 오프라인 자료를 제공, 답변 출처 표시, Mac·Windows 지원
Shaan Syed는 소프트웨어 개발자이며, Gmail용 AI 답변 도우미 Rilo를 크롬 웹스토어에 제공한다
Shaan Syed builds software. Rilo, an AI reply assistant for Gmail, is on the Chrome Web Store. Computer Science at Waterloo, BBA at Laurier.
기타TypeScript · CSSGitHub @DraxAgon온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Personal site for Shaan Syed. Next.js App Router, TypeScript, Tailwind
CSS v4. Fully static, no CMS, no database, no analytics.
Then open http://localhost:3000.
All content lives as typed objects in src/content/. Pages map over
that data, so nothing is hard-coded in JSX. Adding a job is a one-object
edit.
Site copy follows a strict style: no em dashes, no en dashes, no
exclamation points, and a banned vocabulary list. The audit is
automated. With the production server running:
It exits non-zero if any hard rule is broken. Run it after editing copy.README 전문 보기 ↗Personal site for Shaan Syed. Next.js App Router, TypeScript, Tailwind CSS v4. Fully static, no CMS, no database, no analytics.
npm install
npm run dev
Then open http://localhost:3000.
npm run build # production build, must pass clean before deploying
npm run start # serve the production build locally
npm run lint # eslint
npx tsc --noEmit # type check
All content lives as typed objects in src/content/. Pages map over
that data, so nothing is hard-coded in JSX. Adding a job is a one-object
edit.
| File | Holds |
|---|---|
profile.ts | Name, subtitle, hero line, availability line, social links |
experience.ts | The Experience list on the home page |
projects.ts | The four project entries |
education.ts | Degrees, high school, the high school record, interests |
skills.ts | The two labelled skill runs |
awards.ts | Awards and honours |
certifications.ts | Completed and in-progress certifications |
bio.ts | The first-person paragraphs on /bio |
Site copy follows a strict style: no em dashes, no en dashes, no exclamation points, and a banned vocabulary list. The audit is automated. With the production server running:
npm run build && npm run start
node scripts/copy-audit.mjs
It exits non-zero if any hard rule is broken. Run it after editing copy.
Every slot holds a real image: the home portrait, the four frames in the
/bio rail, the org logos, and a screenshot of riloai.app. To swap a
photo, overwrite the file and update the width and height next to it
in src/app/page.tsx or src/content/bio.ts, since Next uses those to
reserve the space. scripts/generate-placeholders.mjs still fills any
slot that goes missing.
Two columns on the home page: identity on the left, a record of work on
the right as expandable rows. The projects page is a numbered index with
a detail panel. Colour tokens and their measured contrast ratios are at
the top of src/app/globals.css; --brass is text and stroke only,
because it fails contrast as a fill behind light text.
node scripts/fetch-logos.mjs # org logos from official sites
node scripts/generate-icons.mjs # brand icons from simple-icons
node scripts/shoot-project-sites.mjs # screenshot riloai.app
node scripts/generate-placeholders.mjs # fills any missing slot
node scripts/blacken-portrait-ground.mjs # portrait ground -> black
node scripts/build-favicon.mjs # tab and home-screen icons
The social card carries its own copies of the site's two faces, the portrait and each project's mark, because Satori draws the card from raw bytes and reads neither a next/font face nor a webp:
node --experimental-strip-types scripts/build-og-assets.mjs