A full-stack solution to a personal portfolio with a built-in content management system.
I've always wanted to build my own corner of the internet. A digital "place for my stuff". Showcase is my answer to that desire. It's an after-hours project I've been building for months.
It has an expansive feature set that a variety of users can leverage.
- Integrated Content-Management System: Add, Edit, Delete, and Feature content.
- Styling and Themes: Content adjusts to fit user's device. Change the entire site's theme on-the-fly.
- SEO: Server-side rendering, user-defined slugs, auto-generated meta tags for sharing content
- Security: Opt-In 2FA, Secure Cookie Auth, Configurable Sanitization
- Content: Host your portfolio, a blog, photo, and media section. Rename or hide the portfolio section.
- Contact: Wire up some SMTP credentials to receive messages from prospective users.
- Versatilitiy: Edit most of the website at any time. Environment configuration supports a variety of deployments.
- And More: Pagination, Categories, Tags, Search, Addressable Highlights, etc... all implemented!
If you're new to these technologies, I recommened the following:
- Mosh's Series on React and Node.js
- Official Next.js Docs
To get a local copy up and running follow these simple steps.
- Node.js
- MongoDb
- Clone or Fork the project
git clone https://github.com/nickprovs/showcase.git
- Install NPM packages
npm install
- Start the client - usually from a VS Code terminal
Create development.json config file using example.development.json from /config as an example
cd client
npm run dev
- Start the server - usually from a VS Code terminal
Update default.json config file in /config or create config files for other dev environments
cd server
npm start
This website can be used to show your personal and/or professional content. It can always be forked, revised, or expanded for your personal needs.
The high-level architectural picture here is that the Next.js app (Client) simply hosts the pages and it gets the data from the Express API (Server).
Both the client and server are environment configurable, so you should be able to deploy anywhere.
A good choice would be to deploy to Google Cloud's AppEngine, and MongoDB Cloud.
- Create a MongoDB Database in the cloud and get it's connection string.
- Create an AppEngine project.
- Wire up your domain name to the AppEngine project.
- Create your app.yaml's in the client and server folders based on the example files.
- Run gcloud app deploy from both the client and server directory.
- These two nodejs services will be deployed to the same AppEngine project.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the GNU GPLv3 License. See License for more information.