Update README.md
This commit is contained in:
@@ -1,219 +1,13 @@
|
||||
# My Portfolio Site
|
||||
|
||||
This repository now follows the requested multi-service architecture with a React frontend, Go CRUD service, Python API, Rust engine, and automated test pipeline.
|
||||
This repository contains the a github backup of the code for deploying my personal portfolio site, it is currently self hosted on a raspberry pi at my home through yunohost but was previously hosted on godaddy, netlify and AWS using amplify.
|
||||
Development
|
||||
|
||||
## Repository structure
|
||||
This project uses a React frontend. Prerequisites/Required Tools:
|
||||
|
||||
```text
|
||||
my-personal-site/
|
||||
├── src/ # React application
|
||||
│ ├── assets/
|
||||
│ ├── components/
|
||||
│ │ ├── Footer.js
|
||||
│ │ ├── Jumbotron.js
|
||||
│ │ ├── Layout.js
|
||||
│ │ ├── Navigation.js
|
||||
│ │ └── ProjectCard.js
|
||||
│ ├── hooks/
|
||||
│ ├── pages/
|
||||
│ │ ├── Contact.js
|
||||
│ │ ├── Home.js
|
||||
│ │ ├── Projects.js
|
||||
│ │ └── Resume.js
|
||||
│ ├── App.js
|
||||
│ ├── App.css
|
||||
│ ├── index.js
|
||||
│ └── index.css
|
||||
├── functions/
|
||||
│ ├── go/ # Go microservices
|
||||
│ │ ├── api-gateway/
|
||||
│ │ ├── user-service/
|
||||
│ │ ├── project-service/
|
||||
│ │ └── shared/
|
||||
│ ├── rust/ # Rust services
|
||||
│ │ ├── auth-service/
|
||||
│ │ ├── file-service/
|
||||
│ │ └── shared/
|
||||
│ └── python/ # Python services
|
||||
│ ├── ml-service/
|
||||
│ ├── data-processing/
|
||||
│ └── analytics-service/
|
||||
├── dist/ # Builds of all services
|
||||
│ ├── go/
|
||||
│ ├── rust/
|
||||
│ └── python/
|
||||
├── amplify/ # amplify
|
||||
│ ├── data/
|
||||
│ ├── functions/
|
||||
│ └── backend.ts
|
||||
├── docs/ # Documentation
|
||||
├── tests/ # Integration and unit tests
|
||||
│ ├── frontend/
|
||||
│ ├── functions/
|
||||
│ └── integration/
|
||||
├── .github/ # GitHub Actions workflows
|
||||
│ └── workflows/
|
||||
│ │ ├── codeql-analysis.yml
|
||||
│ │ ├── frontend-deploy.yml
|
||||
│ │ ├── go-backend-deploy.yml
|
||||
│ │ ├── python-backend-deploy.yml
|
||||
│ │ ├── rust-backend-deploy.yml
|
||||
│ │ └── test-pipeline-deploy.yml
|
||||
│ └── dependabot.yml
|
||||
├── README.md
|
||||
├── .gitignore
|
||||
├── amplify.yml
|
||||
├── package.json
|
||||
├── package-lock.json
|
||||
└── Makefile
|
||||
```
|
||||
Node.js (v16+) and npm - For React frontend
|
||||
Git - Version control
|
||||
|
||||
## Development
|
||||
Deployment
|
||||
|
||||
This project uses a multi-language architecture with Go, Rust, and Python backend services and a React frontend. The build system is managed through a comprehensive Makefile that handles cross-platform development.
|
||||
Prerequisites
|
||||
Required Tools
|
||||
|
||||
Node.js (v16+) and npm - For React frontend and Amplify CLI
|
||||
Git - Version control
|
||||
|
||||
### Optional Tools (for backend development)
|
||||
|
||||
Go (v1.19+) - For Go-based Lambda functions
|
||||
Rust and Cargo - For Rust-based Lambda functions
|
||||
Python (v3.8+) and pip - For Python-based Lambda functions
|
||||
|
||||
## Quick Start
|
||||
1. Check Dependencies
|
||||
|
||||
`make check-deps`
|
||||
|
||||
This will verify which tools are installed and show warnings for missing optional dependencies.
|
||||
2. Install Dependencies
|
||||
|
||||
`make install-deps`
|
||||
|
||||
Installs all available dependencies for detected languages and tools.
|
||||
3. Start Development Environment
|
||||
|
||||
`make dev`
|
||||
|
||||
This starts both the Amplify sandbox and React development server.
|
||||
|
||||
## Development Workflow
|
||||
### Building Functions
|
||||
|
||||
Build all available functions: `make build-all`
|
||||
|
||||
Build specific language functions:
|
||||
`make build-go # Build Go Lambda functions`
|
||||
`make build-rust # Build Rust Lambda functions`
|
||||
`make build-python # Build Python Lambda functions`
|
||||
|
||||
### Testing
|
||||
|
||||
Run all tests: `make test`
|
||||
|
||||
Runs frontend tests and any available backend tests for installed languages.
|
||||
|
||||
### Cleaning
|
||||
|
||||
Clean build artifacts: `make clean`
|
||||
|
||||
Removes all build artifacts, compiled binaries, and temporary files.
|
||||
|
||||
|
||||
## Platform-Specific Setup
|
||||
Installing Python
|
||||
|
||||
macOS (with Homebrew): make install-python-mac
|
||||
|
||||
Ubuntu/Debian: make install-python-ubuntu
|
||||
|
||||
CentOS/RHEL: make install-python-centos
|
||||
|
||||
Windows: make install-python-windows
|
||||
Project Structure
|
||||
|
||||
The Makefile automatically detects functions in these locations:
|
||||
|
||||
Go functions: `functions/go/*/main.go`
|
||||
Rust functions: `functions/rust/*/Cargo.toml`
|
||||
Python functions: `functions/python/*/lambda_function.py`
|
||||
|
||||
## Build Outputs
|
||||
|
||||
All compiled functions are packaged as ZIP files in the dist/
|
||||
directory:
|
||||
|
||||
```text
|
||||
dist/
|
||||
├── go/
|
||||
│ └── function-name.zip
|
||||
├── rust/
|
||||
│ └── function-name.zip
|
||||
└── python/
|
||||
└── function-name.zip
|
||||
```
|
||||
|
||||
## Development Features
|
||||
### Cross-Platform Support
|
||||
|
||||
Automatically detects available tools and skips unavailable languages
|
||||
Platform-specific Python installation helpers
|
||||
Graceful handling of missing dependencies
|
||||
|
||||
## Optimized Builds
|
||||
|
||||
Go: Builds for Linux ARM64 (Lambda-optimized)
|
||||
Rust: Uses `cargo-lambda` when available, falls back to standard cargo
|
||||
Python: Includes dependency packaging with pip
|
||||
|
||||
## Smart Dependency Management
|
||||
|
||||
Automatically runs `go mod tidy` for Go modules
|
||||
Installs `cargo-lambda` for optimized Rust builds
|
||||
Handles Python virtual environments and requirements.txt
|
||||
|
||||
## Deployment
|
||||
|
||||
Deploy to Amplify: `make deploy`
|
||||
|
||||
Builds all functions and deploys using Amplify pipeline.
|
||||
|
||||
## Available Make Targets
|
||||
Target Description
|
||||
`help` Show all available targets
|
||||
`check-deps` Verify required tools are installed
|
||||
`install-deps` Install all dependencies
|
||||
`build-all` Build all available functions
|
||||
`build-go` Build Go functions only
|
||||
`build-rust` Build Rust functions only
|
||||
`build-python` Build Python functions only
|
||||
`clean` Remove build artifacts
|
||||
`test` Run all tests
|
||||
`dev` Start development environment
|
||||
`deploy` Deploy to Amplify
|
||||
|
||||
## Troubleshooting
|
||||
### Common Issues
|
||||
|
||||
"Command not found" errors:
|
||||
|
||||
Run make `check-deps` to see which tools need installation
|
||||
Install missing tools using your system's package manager
|
||||
|
||||
Build failures:
|
||||
|
||||
Ensure you're in the project root directory
|
||||
Run `make clean` then try building again
|
||||
Check that function directories contain the expected entry files
|
||||
|
||||
Python dependency issues:
|
||||
|
||||
Ensure pip is installed: `python -m ensurepip --upgrade`
|
||||
Try using pip3 explicitly if pip fails
|
||||
|
||||
## Getting Help
|
||||
|
||||
Run `make help` to see all available commands and their descriptions.
|
||||
The website currently uses yarn to build and deploy the website
|
||||
|
||||
Reference in New Issue
Block a user