This is my personal portfolio built to showcase my skills, projects, and articles. The design is inspired by Visual Studio Code, providing a familiar interface for developers.
- VS Code Inspired Design: A layout that mirrors the look and feel of Visual Studio Code.
- Dark/Light Mode: Toggle between dark and light themes, with preferences saved in local storage.
- Responsive Design: Optimized for desktop and mobile devices (best viewed on desktop).
- Interactive Pages: Displays various sections including About, Skills, Projects, and more.
- Dynamic Content: Articles and GitHub repositories fetched via APIs through a custom Express proxy server and Netlify serverless functions.
- 404 Page: Custom 404 page for any invalid URLs.
- Frontend: React, JavaScript, HTML, SCSS
- Backend: Node.js, Express (Proxy server)
- Build Tool: Vite
- API Integrations: Custom API, GitHub API, Dev.to API (via proxy server)
- Deployment: Hosted on Netlify
To run this project locally, follow these steps:
- Node.js (version 14 or higher)
- npm (or yarn)
-
Clone the repository:
git clone https://github.com/tomasdevs/portfolio-vscode.git cd portfolio-vscode -
Install dependencies for both the main project and the API:
# Install frontend dependencies npm install # Navigate to the api directory and install backend dependencies cd api npm install
-
Create a .env file in the api directory and add your Dev.to API key:
VITE_DEV_TO_API_KEY=your_api_key_here -
Set up environment variables on Netlify for production:
Go to your Netlify dashboard, navigate to the site settings, and add the same
VITE_DEV_TO_API_KEYwith your Dev.to API key under Environment Variables. -
Start the Express server for handling API requests:
cd api node server.jsThe server will run on http://localhost:5000.
-
Start the Vite development server:
npm run dev
-
Open your browser and navigate to: http://localhost:5173
portfolio-vscode/
├── api/
│ ├── .env # Environment variables for the API
│ ├── server.js # Express server for API requests
│ ├── package.json # API dependencies
│ └── package-lock.json # Lockfile for the API dependencies
├── netlify/
│ └── functions/
│ └── fetchArticles.js # Serverless function for fetching articles
├── public/
│ ├── api/
│ │ └── projects.json # JSON data for projects
│ ├── icons/ # Icons used in the portfolio
│ ├── images/ # Images for the portfolio
│ └── favicon.ico # Favicon for the website
├── src/
│ ├── components/ # Reusable UI components
│ ├── pages/ # Different pages like Home, About, Projects, etc.
│ ├── styles/ # SCSS styles
│ ├── App.jsx # Main App component
│ ├── main.jsx # Entry point for React
│ └── index.html # HTML template
├── .gitignore # Files and directories to ignore in version control
├── .eslintrc.js # ESLint configuration
├── LICENSE # License for the project
├── netlify.toml # Netlify configuration for redirects and functions
├── package.json # Project dependencies and scripts
├── package-lock.json # Lockfile for the project dependencies
├── vite.config.js # Vite configuration
└── README.md # Project documentation
Check out the live version of the portfolio at: https://tomasdevs.netlify.app
If you want to contribute to this project:
- Fork the repository.
- Create a new branch (git checkout -b feature/YourFeature).
- Make your changes and commit them (git commit -m 'Add some feature').
- Push to the branch (git push origin feature/YourFeature).
- Open a Pull Request.
This project is licensed under the MIT License - see the MIT License file for details.