AI agents, workflow automation, and AI-powered web apps. Built one project at a time by Igor Lima in San Diego, California.
The home base for NiftyAi, a one-person AI and automation studio. Single-page Astro site, static-rendered, deployed to GitHub Pages on every push to main. Dark theme, scroll-reveal animations, structured data for local + global SEO, contact form routed through Formspree so no email is exposed on the page.
Trilingual (English, Portuguese, Spanish). Based in San Diego, California. Open to remote work anywhere in the US, Brazil, and Latin America.
The same shipped work that's featured on the live site.
| Project | What it does | Stack | Status |
|---|---|---|---|
| MASTER Prompt Library (code) | 427 career-grade prompts built on a 9-layer framework (Mission, Agent, Situation, Task, Examples, Rules, Think, Eval, Output). Templates, completed exercises, and a scheduled scraper that surfaces the best prompts from across the web. | Next.js, TypeScript, GitHub Pages | Live |
| NiftyStats (code) | Browser-native statistical analysis. Drop a CSV, get descriptives, distributions, and correlations. Pyodide runs Python in WebAssembly so data never leaves your machine. | Vite, React, Pyodide, Pandas | Live |
| NiftyVid (code) | Image-to-video AI in the browser. Drop a photo, write a motion prompt, get a 5-second MP4 back. Powered by Wan 2.2, the open-source answer to Runway Gen-3 and Kling. | Astro, Tailwind, Cloudflare Workers, Wan 2.2 | Live |
| Retail Lead Router | Agent that reads inbound retail leads, routes by intent (financing, walk-in, B2B, support), and drafts the first reply. Built from real mattress-store operator experience. | Python, OpenAI, Twilio, Postgres | In development |
More projects on github.com/IgorCSIS.
| Layer | Choice |
|---|---|
| Static site generator | Astro 4 |
| Styling | Tailwind CSS 3 |
| Typed scripts | TypeScript 5 |
| Contact form | Formspree (free tier) |
| Hosting | GitHub Pages |
| CI / Deploy | GitHub Actions |
| Structured data | JSON-LD (Person + ProfessionalService) |
Requires Node 18 or newer (built on Node 22).
# Install dependencies
npm install
# Copy the env template and add your Formspree endpoint
Copy-Item .env.example .env
# then edit .env in your editor
# Start dev server at http://localhost:4321/niftyai-portfolio
npm run devHot reload is on. Tailwind purges unused classes during the production build, so utility-heavy markup doesn't bloat the bundle.
niftyai-portfolio/
├── public/ # static assets (favicon, brand images, robots.txt)
├── src/
│ ├── components/ # section components (Hero, Services, Portfolio, etc.)
│ ├── layouts/ # Layout.astro: document shell + meta + JSON-LD
│ ├── pages/ # routes; index.astro is the home page
│ ├── scripts/ # client-side TS (reveal observer)
│ └── styles/ # global.css with custom CSS layers
├── astro.config.mjs # Astro + Tailwind + sitemap config
├── tailwind.config.mjs # palette, fonts, custom animations
└── .github/workflows/ # GitHub Actions deploy pipeline
Content lives in data arrays at the top of each component, not scattered through markup.
| What | Where |
|---|---|
| Services and pricing | src/components/Services.astro → services |
| Portfolio projects | src/components/Portfolio.astro → projects |
| Nav links | src/components/Header.astro → navItems |
| Social icons | src/components/Footer.astro → socials |
| Meta + schema | src/layouts/Layout.astro |
Every push to main triggers .github/workflows/deploy.yml, which builds the site and publishes to GitHub Pages.
Before the first deploy works, enable Pages in repo settings:
- Settings → Pages
- Source: GitHub Actions
- Save, then push to
main
Production URL:
https://igorcsis.github.io/niftyai-portfolio/
To swap in a custom domain later, update site in astro.config.mjs to the apex and drop the base value.
This site ships with:
- JSON-LD structured data (Person + ProfessionalService schemas) for rich snippets
- Open Graph + Twitter card meta for clean link previews on Slack, LinkedIn, iMessage
- Auto-generated sitemap via
@astrojs/sitemap robots.txtwith explicit allow for GPTBot, ClaudeBot, Google-Extended- Geo meta tags for local-search ranking signals
- Title format optimized for the local pack: service category + city up front
MIT. See LICENSE.
Part of the NiftyAi project family by Igor Lima. Companion repos: NiftyStats, NiftyVid.
