219 lines
6.2 KiB
Markdown
219 lines
6.2 KiB
Markdown
# 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.
|
|
|
|
## Repository structure
|
|
|
|
```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
|
|
```
|
|
|
|
## Development
|
|
|
|
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. |