Production portfolio for Juan Rodriguez, an Information Systems Security Engineer with a Computer Science background and experience in cybersecurity, systems integration, network analysis, technical project delivery, and quality assurance.
- Next.js App Router
- React 19
- TypeScript
- Tailwind CSS v4 for the base build pipeline
- Custom CSS for the visual system
- Lucide React for small interface icons
npm install
npm run devThe site runs at http://localhost:3000.
npm run lint
npm run test
npm run build
npm startnpm run test is the TypeScript check because this portfolio does not currently include a separate test suite.
Resume-grounded content lives in src/data/resume.ts. Update the profile, skills, experience, training, military experience, or education there so the homepage stays consistent.
- Add or update the LinkedIn and GitHub URLs in
profileinsrc/data/resume.ts. - A resume button is intentionally omitted until a public PDF is added to the project.
- The StelEsthetics case study lives at
src/components/StelEstheticsCaseStudy.tsxand/case-studies/steleesthetics.
Analytics is disabled by default. To enable it, set the public measurement ID in the deployment environment:
NEXT_PUBLIC_GA_MEASUREMENT_ID=G-XXXXXXXXXXThe site works normally without this variable. NEXT_PUBLIC_SITE_URL can also be set to change the canonical URL, sitemap, robots file, and Open Graph URL:
NEXT_PUBLIC_SITE_URL=https://example.comDo not commit .env files, credentials, API keys, or private key material.
The app can be deployed to Vercel or Netlify using the standard Next.js configuration:
- Install dependencies with
npm install. - Use
npm run buildas the build command. - Use
npm startfor a Node.js server deployment, or use the platform's native Next.js runtime. - Configure
NEXT_PUBLIC_SITE_URLand, optionally,NEXT_PUBLIC_GA_MEASUREMENT_IDin the deployment environment.
The project includes security response headers, a sitemap, and a robots route. The old project and form routes redirect to the current single-page portfolio or the dedicated StelEsthetics case study.