Welcome to PersonalHub! This repository is a central hub for my personal projects, experiments, and infrastructure configurations. It serves as a playground for learning new technologies, a portfolio of my work, and a platform for hosting my personal applications.
The PersonalHub ecosystem is designed to be a scalable and resilient platform for hosting a variety of applications. The architecture is centered around Google Cloud Platform (GCP) and leverages Docker for containerization, Terraform for infrastructure as code, and GitHub Actions for CI/CD.
This repository contains several projects, each with its own directory and documentation. Here's a quick overview:
Project | Description | Technologies |
---|---|---|
FastAPI API | A robust and scalable API built with FastAPI. It serves as the backend for the portfolio app and other projects. | Python, FastAPI, Docker |
Portfolio App | My personal portfolio website, built with Next.js. It showcases my projects, skills, and blog posts. | Next.js, React, TypeScript, Tailwind CSS |
Cloud Functions | A collection of serverless functions for various tasks, such as data processing and automation. | Python, R, Docker, Google Cloud Run |
Terraform IaC | Infrastructure as Code for deploying all the necessary GCP resources, including networking, storage, and compute. | Terraform, Google Cloud Platform |
Grafana Dashboards | Monitoring and visualization dashboards for my services, providing real-time insights into application performance and system health. | Grafana, Docker |
This project utilizes a wide range of technologies, including:
- Backend: Python, FastAPI, Node.js
- Frontend: Next.js, React, TypeScript, Tailwind CSS
- Data: PostgreSQL, FireStore, BigQuery
- DevOps: Docker, Terraform, GitHub Actions
- Cloud: Google Cloud Platform (GCP)
Most applications in this repository are designed to be deployed as Docker containers on Google Cloud Run. You can find detailed deployment instructions in the readme.txt
file within each project's directory.
Here's a general example of how to deploy an application:
# Build the Docker image
docker buildx build --platform linux/amd64 \
-t us-central1-docker.pkg.dev/personalhub14/personalhub-artifact-repo/<app-name> \
-f <app-name>.dockerfile \
--push .
# Deploy to Google Cloud Run
gcloud run deploy <app-name>-run \
--image=us-central1-docker.pkg.dev/personalhub14/personalhub-artifact-repo/<app-name> \
--platform=managed \
--region=us-central1 \
--allow-unauthenticated
This project uses GitHub Actions for continuous integration and continuous deployment (CI/CD). The workflows are defined in the .github/workflows
directory and are triggered by pushes to specific branches.
deploy-fastapi-api.yml
: Deploys the FastAPI application to Cloud Run when changes are pushed to thefastapi-api
branch.deploy-portfolio-app.yml
: Deploys the Next.js portfolio application to Cloud Run when changes are pushed to theportfolio
branch.
To run any of the projects locally, please refer to the readme.txt
file in the corresponding project directory. Generally, you'll need to have Docker and the relevant programming language (Python, Node.js) installed.
For example, to run the portfolio app:
cd portfolio_app
npm install
npm run dev
This is a personal project, but I'm open to suggestions and contributions. If you have any ideas or find any issues, feel free to open an issue or submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for more details.