Welcome to the backend service repository for my personal portfolio. This Node.js application is the behind-the-scenes engine that powers the dynamic functions of my portfolio, providing a robust API for the frontend to consume. It's designed to seamlessly run on Google App Engine, store images in Google Cloud Storage, and uses MongoDB as its database for persisting data.
- CRUD Operations: Create, Read, Update, and Delete capabilities for portfolio data.
- Secure Authentication: Utilizes JSON Web Tokens (JWT) for secure authentication of CRUD operations.
- Google Cloud Integration: Hosted on Google App Engine with images stored in Google Cloud Buckets.
- MongoDB Database: Leverages the flexibility and scalability of MongoDB for data management.
Here's how you can get this backend up and running for development or deployment purposes.
- Node.js installed on your local development machine.
- A Google Cloud Account with App Engine and Cloud Storage enabled.
- A MongoDB database, either hosted on MongoDB Atlas or your own setup.
- An understanding of Node.js and Express framework.
Clone this repository to your local machine:
git clone https://github.com/Damione1/portfolio-nodejs.git
cd portfolio-nodejs
Install the necessary project dependencies:
npm install
For local development with live reloading:
npm run dev
This will start the server using nodemon, which will automatically reload if you make edits to server files.
To start the server in production:
npm run start
This will launch the Node.js server using the standard node
command.
To deploy your application to Google App Engine, make sure your app.yaml
is properly configured. Then you can run:
gcloud app deploy
Ensure you've initialized the Google Cloud SDK and are logged in with permissions to deploy to your chosen project.
Be sure to set up the environment variables (.env
) in your deployment based on the sample file.
This server uses JWT for securing endpoints related to CRUD operations. JWT tokens must be obtained via a login or a similar authentication process and included in the Authorization
header of requests to access protected routes.
The API endpoints exposed by this backend allow for the full suite of CRUD operations on portfolio items, authentication, and image management. The integration with Google Cloud ensures reliable and scalable storage options, particularly for image assets.
When deploying this backend service, make sure that all sensitive details such as database URI, JWT secrets, and Google Cloud Service credentials are secured and not exposed in your source code repository.
This backend provides a solid and secure foundation for handling the data-driven operations of my portfolio. It's designed with modern tools and services in mind, offering a reliable way to manage and present my professional work. Whether you're running it locally or deploying to Google App Engine, this Node.js server is ready to support a seamless content management experience.