AI-Powered & Magical Anime Portfolio
Bridging the gap between ancient arcane aesthetics and modern web development
A timeless personal portfolio with an edgy, high-fantasy anime aesthetic — featuring Grimoire 3D project books, mysterious HUDs, and ambient audio — built on Next.js 14, TypeScript, and SCSS modules.
Crafted with floating sakura petals, RPG-style skill bars, cursor sparkles, and a deep "arcane night" dark mode.
| Layer | Choice |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Styling | SCSS Modules + custom tokens |
| Animations | CSS keyframes + Framer Motion (available) |
| Icons | Lucide React |
| Design system | Once UI (@once-ui-system/core) — installed, ready to extend |
| Fonts | Zen Maru Gothic (display), Inter (body) — via next/font/google |
npm install
npm run dev.
├── app/
│ ├── layout.tsx # Root, fonts, providers
│ ├── page.tsx # Single-page assembly of sections
│ ├── globals.scss # Imports theme + animations + base
│ ├── theme.scss # Color tokens, light + dark mode
│ └── animations.scss # Reusable keyframes
├── components/
│ ├── providers/ThemeProvider.tsx
│ ├── layout/ # Navbar, Footer, ThemeToggle
│ ├── effects/ # SakuraPetals, CursorSparkles
│ ├── sections/ # Hero, About, Skills, Projects, Experience, Contact
│ └── ui/ # ProjectCard, SectionDivider
├── lib/data.ts # All portfolio content (✏️ edit this)
├── public/
│ ├── avatar.svg # Placeholder anime portrait
│ └── favicon.svg
└── ...
- Your info — edit
lib/data.ts(name, bio, skills, projects, experience, socials). - Avatar — replace
public/avatar.svgwith your own anime portrait (PNG/JPG/SVG). - Resume — drop your PDF in
public/resume.pdf(linked from About section). - Colors — tweak
app/theme.scss:--pink-*,--blue-*,--lavender-*for accents[data-theme="light"]/[data-theme="dark"]for mode-specific values
- Sections — comment out any section in
app/page.tsxto disable. - Anime touches — toggle in
app/layout.tsx(SakuraPetals,CursorSparkles).
The pastel palette uses CSS custom properties exposed in :root. To rebrand:
:root {
--pink-400: #ff9fb8; // primary CTA
--blue-400: #7fb3ff; // secondary CTA
--lavender-300: #c8b6ff;
}Both light and dark modes inherit these and remap semantic tokens (--bg-base, --text-primary, etc.).
Designed for one-click deploy on Vercel or Netlify.
npm run build- The contact form opens the user's mail client by default. Swap to an API (Resend, Formspree, etc.) in
Contact.tsxwhen ready. - Animations respect
prefers-reduced-motion. - Cursor sparkles only render on fine-pointer devices.
MIT — feel free to fork and remix. Keep the kindness, please ✿