An open API service indexing awesome lists of open source software.

https://github.com/sssamuelll/abc

Portfolio website for art director Angelica Burgos. React + TypeScript + headless WordPress, 8 languages.
https://github.com/sssamuelll/abc

headless-cms i18next multilingual portfolio react typescript vite wordpress

Last synced: 21 days ago
JSON representation

Portfolio website for art director Angelica Burgos. React + TypeScript + headless WordPress, 8 languages.

Awesome Lists containing this project

README

          

# ABC – Angelica Burgos Portfolio

Monorepo for the Angelica Burgos portfolio website. React + TypeScript frontend with a headless WordPress backend.

## Structure

```
abc/
├── frontend/ # React/Vite frontend (TypeScript)
├── wordpress/ # Headless WordPress backend
│ ├── wp-content/ # Themes, plugins, languages
│ ├── docker-compose.yml # Docker setup for WordPress + MariaDB + phpMyAdmin
│ ├── uploads.ini # PHP upload config
│ └── .env.example # Environment variables template
├── tools/
│ ├── image-optimizer/ # FFmpeg-based image optimization tool
│ └── gif-optimizer/ # FFmpeg-based GIF optimization tool
├── .github/workflows/
│ ├── deploy-frontend.yml # Auto-deploy frontend on push
│ └── deploy-wordpress.yml # Auto-deploy WordPress plugins/themes on push
└── README.md
```

## Deployment

Both services deploy automatically via GitHub Actions on push to `main`:

- **Frontend**: Triggers when `frontend/**` changes. Builds with Node 22, deploys build output to the server, reloads nginx.
- **WordPress**: Triggers when `wordpress/wp-content/plugins/**` or `wordpress/wp-content/themes/**` change. Syncs files to the server, restarts the Docker container.

### Required GitHub Secrets

- `SSH_HOST` – Server hostname
- `SSH_KEY` – SSH private key for deployment

## Development

### Frontend
```bash
cd frontend
cp .env.example .env # configure API URL
npm install
npm run dev
```

### WordPress
```bash
cd wordpress
cp .env.example .env # configure DB credentials
docker compose up -d
```

## Internationalization

The frontend supports 8 languages: English, Spanish, French, Portuguese, German, Japanese, Korean, and Traditional Chinese. Translations are managed via i18next in `frontend/public/locales/`.