Overview
Portfolio Javier Navas is a modern, macOS-inspired portfolio website built with React Router 7. This guide will help you set up the project locally and start the development server.This portfolio features an interactive desktop environment with draggable windows, a terminal emulator, calendar, photo gallery, and more.
Prerequisites
Before you begin, ensure you have the following installed:- Node.js (version 18 or higher)
- npm, yarn, pnpm, or bun package manager
- A MongoDB instance (optional, for calendar events)
Installation
Install dependencies
Install the project dependencies using your preferred package manager:This will install all required dependencies including:
- React Router 7 (
@react-router/node,@react-router/serve) - React 19 and React DOM
- TailwindCSS 4 for styling
- react-draggable for window management
- MongoDB driver (optional)
Configure environment variables
Create a The MongoDB integration is used to store dynamic calendar events. If you don’t configure MongoDB, the app will use static calendar data from
.env file in the root directory for optional MongoDB integration:app/textos.ts.Start the development server
Run the development server with hot module replacement (HMR):The application will be available at
http://localhost:5173.Explore the desktop environment
Once the server is running, you’ll see:
- Interactive Desktop with a macOS-style menu bar and dock
- Terminal Window that opens automatically with ASCII art welcome screen
- Desktop Icons for Projects, Experience, Studies, and Photos folders
- Draggable Windows that can be minimized, maximized, and closed
help in the terminal to see available commands!What You’ll See
When you first open the application:- Menu Bar (top) - Displays the portfolio owner’s name and system information
- Desktop Area - Contains folder icons on the left side
- Terminal Window - Opens automatically with ASCII art banner:
- Dock (bottom) - Quick access to all applications
Terminal Commands
The terminal supports the following commands:help
Display all available commands
about
Show information about the portfolio owner
ls / dir
List files in the current directory
cd <folder>
Navigate into a folder (proyectos, trabajos, estudios)
cat <file.txt>
Read a file’s contents
open cv.pdf
Open or download the CV
ping <project>
Get info and URL for a specific project
git init
Display GitHub profile link
clear
Clear the terminal screen
Available Scripts
The project includes several npm scripts defined inpackage.json:
Development
http://localhost:5173.
Build
build/ directory with:
build/client/- Static assets (JS, CSS, images)build/server/- Server-side code for SSR
Production Server
http://localhost:3000.
Type Checking
Project Structure
Here’s a quick overview of the main files and folders:Next Steps
Explore Features
Learn about all the interactive features and components
Customize Content
Customize the portfolio content for your own use
Deploy
Deploy your portfolio to production
Components
Dive into the component architecture
Troubleshooting
Port already in use
If port 5173 is already in use, React Router will automatically try the next available port.MongoDB connection errors
If you see MongoDB connection errors in the console:- Check that your MongoDB instance is running
- Verify the
MONGODB_URIin your.envfile - The app will continue to work with static calendar data
Hot Module Replacement not working
If HMR stops working:- Stop the dev server (Ctrl+C)
- Clear the
.react-router/cache directory - Restart with
npm run dev
Getting Help
If you encounter any issues:- Check the React Router documentation
- Review the TailwindCSS documentation
- Inspect the browser console for error messages
- Check the terminal output for server errors