A cinematic, high-performance portfolio website designed for architects and designers. Built with Next.js 14, this project features a custom file-based CMS, an immersive dark-themed UI, and robust security measures to protect intellectual property.
- Immersive UI: Dark mode by default, featuring a custom cursor and smooth page transitions.
- High-Performance Gallery: Automatic thumbnail generation using
sharpensures fast loading even with high-resolution architectural renders. - Responsive Design: Fully optimized for desktop, tablet, and mobile devices.
- Built-in CMS: Manage your projects directly from the website.
- Functionality: Add, Edit, and Delete projects with ease.
- Drag & Drop Upload: Supports multi-image uploads.
- Security: Password-protected admin route (
/admin/login).
To protect your creative work, the site includes several security layers:
- Right-Click Disabled: Prevents context menu access.
- Text Selection Blocked: Content cannot be highlighted or copied.
- Image Dragging Disabled: Images cannot be dragged to the desktop.
- Screenshot Deterrent: The screen shakes momentarily if a screenshot attempt is detected (experimental).
Designed to be used as a private CV/Portfolio:
- No Indexing: Blocked from Google and other search engines via
robots.txt, meta tags, and HTTP headers (X-Robots-Tag). - Privacy: Your images won't appear in Google Images search results.
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Image Processing: Sharp
- Icons: Lucide React
git clone https://github.com/trillebart1/portfolio.git
cd portfolionpm installNote: This project uses sharp for image processing. Ensure your environment supports it.
You must create a .env.local file in the root directory to set your admin password. This file is not committed to GitHub for security reasons.
Create .env.local:
ADMIN_PASSWORD=your_secure_password(Replace your_secure_password with the password you want to use for the admin panel)
npm run devOpen http://localhost:3000 to view the site.
npm run build
npm start- /app: Next.js App Router pages and API routes.
- /components: Reusable UI components (Navbar, ProjectCard, etc.).
- /data: JSON files acting as the database (
projects.json,messages.json). - /public/projects: Stores uploaded project images. (Ensure this folder has write permissions on the server).
- /lib: Utility functions and types.
If deploying to a Virtual Dedicated Server (Ubuntu/Nginx):
- Clone Repo:
git clone ... - Install Config: Run
npm install,npm run build. - Permissions: Give write access to data folders:
chmod -R 777 data chmod -R 777 public/projects
- Process Manager: Use PM2 to keep the site running:
pm2 start npm --name "portfolio" -- start