13 KiB
13 KiB
Git Workflow & Memory Bank
Git Configuration
Repository Information
- Repository URL:
https://gitea.sigd.net/chaulmark/deafgain-website - Gitea Server: gitea.sigd.net (private Gitea instance)
- Username:
eliza - Authentication: Personal Access Token
- Current Token:
3dba996c9eca5b6267f7cd1b0996a94aac1ac0d5(created 3/5/2026) - Local Path:
/Users/Eliza/DeafGain-website - Main Branch:
main - Latest Commit:
78aade0c94a4bad05e5b8ff95d025e0b68e17336
Token Permissions
The access token has been configured with:
- ✅ Read repository access
- ✅ Write repository access (for pushing changes)
Git Remote Configuration
# Remote is already configured:
origin: https://eliza:3dba996c9eca5b6267f7cd1b0996a94aac1ac0d5@gitea.sigd.net/chaulmark/deafgain-website.git
Common Git Workflows
1. Checking Repository Status
# Check current status
git status
# View current branch
git branch
# View remote branches
git branch -r
2. Pulling Latest Changes
# Pull from main branch (recommended before starting work)
git pull origin main
# Or simply
git pull
3. Viewing Changes History
# View recent commits (short format)
git log --oneline --graph --all -15
# View specific commit details
git show HEAD
git show <commit-hash>
# View changes between commits
git diff HEAD~1 HEAD
git diff <commit-hash1> <commit-hash2>
# View files changed in a commit
git show --stat HEAD
4. Making Changes
# After editing files, check what changed
git status
git diff
# Stage all changes
git add .
# Or stage specific files
git add src/pages/Services.tsx
# Commit changes with meaningful message
git commit -m "Add new feature: Interactive map updates"
# Push to remote repository
git push origin main
# Or simply
git push
5. Viewing File History
# View commit history for specific file
git log --oneline src/pages/Services.tsx
# View changes to a file over time
git log -p src/pages/Services.tsx
# Who changed what in a file
git blame src/pages/Services.tsx
6. Undoing Changes
# Discard changes to a file (before staging)
git checkout -- src/pages/Services.tsx
# Unstage a file (keep changes)
git reset HEAD src/pages/Services.tsx
# Undo last commit (keep changes)
git reset --soft HEAD~1
# Undo last commit (discard changes - DANGEROUS)
git reset --hard HEAD~1
7. Working with Branches
# Create new branch
git checkout -b feature/new-feature
# Switch branches
git checkout main
# List all branches
git branch -a
# Delete branch
git branch -d feature/old-feature
# Push branch to remote
git push origin feature/new-feature
Recent Commit History
Latest Changes (as of 3/5/2026)
78aade0 (HEAD -> main) - Update interactive map: Add RID conference to Missoula MT and update ASLTA description
4755cd3 - Consolidate services into single DeafGain Consultants offering
a565932 - Remove service selection field from contact form
ae7c52d - Add anti-spam honeypot field and update contact form service options
a0cf3e9 - Update memory bank status summary with current system state
df6c696 - Fix email configuration: Update SMTP port to 587 and regenerate Gmail app password
379c4e1 - Add Parliamentarian service and update Austin TX event
8b2b421 - Update email configuration: change SMTP port to 2525
5d49c9e - Remove ADA-compliant transcripts service
67c775a - Add two locations
86096d9 - Switch to Missoula from Helena
b1e7d29 - Add rebuild flags
b214427 - Added geographic locations for upcoming events
Git Authentication Troubleshooting
If Access Token Expires or Needs Regeneration
-
Generate New Token in Gitea:
- Log into https://gitea.sigd.net
- Settings → Applications → Access Tokens
- Delete old token
- Generate new token with repository permissions
- Copy the new token immediately
-
Update Git Remote:
# Remove old remote git remote remove origin # Add new remote with new token git remote add origin https://eliza:NEW_TOKEN_HERE@gitea.sigd.net/chaulmark/deafgain-website.git # Verify remote git remote -v -
Test Connection:
git pull
Common Authentication Issues
Issue: 403 Forbidden error
- Cause: Token doesn't have proper permissions or has expired
- Solution: Generate new token with
read:repositoryandwrite:repositorypermissions
Issue: Username incorrect
- Cause: Using wrong Gitea username
- Solution: Username is
eliza(not email addresseliza@deafgain.org)
Issue: Token doesn't work
- Cause: Token permissions not properly configured
- Solution: Ensure both read and write repository permissions are enabled
DeafGain Website Codebase Overview
Project Architecture
DeafGain-website/
├── Frontend (React + TypeScript)
│ ├── src/
│ │ ├── pages/ # Main page components
│ │ ├── components/ # Reusable UI components
│ │ ├── api/ # API integration layer
│ │ ├── context/ # React context providers
│ │ └── lib/ # Utility functions
│ └── public/ # Static assets
│ ├── videos/ # Video files (.mp4)
│ ├── subtitles/ # WebVTT subtitle files
│ ├── transcriptions/ # Text transcripts
│ └── images/ # Images and thumbnails
│
├── Backend (Node.js + Express)
│ └── server.ts # API server
│
├── Docker Configuration
│ ├── docker-compose.yml # Production orchestration
│ ├── docker-compose.dev.yml # Development environment
│ ├── Dockerfile # Frontend container
│ ├── Dockerfile.api # Backend container
│ ├── Dockerfile.dev # Dev frontend container
│ └── Dockerfile.dev.api # Dev backend container
│
└── Configuration Files
├── vite.config.ts # Vite build configuration
├── tailwind.config.js # Tailwind CSS config
├── tsconfig.json # TypeScript config
├── nginx.conf # Nginx configuration
├── default.conf # Nginx reverse proxy
└── .env # Environment variables
Key Files and Their Purposes
Frontend Pages (src/pages/)
- Home.tsx: Landing page with hero section and overview
- About.tsx: Information about Eliza and DeafGain
- Services.tsx: Service offerings + interactive US map with conference locations
- Resources.tsx: Video library with 6 governance training videos
- Contact.tsx: Contact form with email notifications
Components (src/components/)
- Layout/: Navbar, Footer, Layout wrapper
- VideoPlayer.tsx: Custom video player with WebVTT subtitle support
- SnowPeaks.tsx: Animated background graphics
- Toast.tsx: Notification component
Backend (server.ts & src/api/)
- server.ts: Main Express API server
- api/contact.ts: Contact form endpoint with email sending
- api/subscribe.ts: Newsletter subscription endpoint
- lib/email.ts: Email service integration (Gmail SMTP)
- lib/rate-limit.ts: Rate limiting logic
Important Patterns
1. Video Resource Structure
Each video requires 4 files:
public/videos/video-name.mp4 # Video file
public/subtitles/video-name.vtt # WebVTT subtitles
public/transcriptions/video-name.txt # Full text transcript
public/images/thumbnails/video-name.png # Thumbnail image
2. Interactive Map Data
Location data structure in Services.tsx:
const relationshipPoints: RelationshipPoint[] = [
{
coordinates: [-longitude, latitude],
city: "City Name",
state: "State",
events: [{
name: "Organization Acronym",
description: "Full event description",
startDate: "Month DD, YYYY",
endDate: "Month DD, YYYY"
}]
}
]
3. Environment Variables
Critical .env variables:
NODE_ENV=production
GMAIL_USER=system@deafgain.org
GMAIL_PASS=gmail_app_password
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
REDIS_URL=redis://localhost:6379
API_URL=http://localhost:804
Development Workflow
Making Changes to the Website
-
Pull latest changes
git pull -
Make your changes
- Edit files as needed
- Test locally with
pnpm dev
-
Check what changed
git status git diff -
Stage and commit
git add . git commit -m "Descriptive message about changes" -
Push to Gitea
git push -
Deploy to production
- Changes are pulled to production server
- Docker containers rebuilt with
docker-compose up --build -d
Adding New Videos
-
Prepare files:
- Video:
public/videos/video-name.mp4 - Subtitles:
public/subtitles/video-name.vtt - Transcript:
public/transcriptions/video-name.txt - Thumbnail:
public/images/thumbnails/video-name.png
- Video:
-
Update Resources.tsx:
{ id: 'video-name', title: 'Video Title', thumbnail: '/images/thumbnails/video-name.png', description: 'Description', category: 'Professional Development & Governance' } -
Commit and push:
git add public/videos/ public/subtitles/ public/transcriptions/ public/images/thumbnails/ src/pages/Resources.tsx git commit -m "Add new video: Video Title" git push
Updating Interactive Map
- Edit Services.tsx
- Add new location to relationshipPoints array
- Use exact coordinates from Google Maps
- Commit and push changes
- Docker must rebuild with
no_cache: trueflag
Production Deployment
Current Production Setup
- URL: https://deafgain.org/
- Server: 10.4.0.206 (behind Caddy reverse proxy)
- Network: caddy_network (172.22.0.0/16)
- Containers:
- deafgain-website-web-1 (port 804)
- deafgain-website-api-1 (port 3000)
- deafgain-website-redis-1
Deployment Process
# On production server
cd /docker/websites/deafgain/
git pull
docker-compose up --build -d
docker-compose logs -f # Monitor logs
Common Tasks Reference
View Recent Changes
git log --oneline --graph --all -15
See What Files Changed in Last Commit
git show --stat HEAD
See Full Changes in Last Commit
git show HEAD
Compare Two Commits
git diff abc123 def456
Search Commit History
# Find commits by message
git log --grep="map"
# Find commits that changed a specific file
git log -- src/pages/Services.tsx
# Find commits by author
git log --author="eliza"
Undo Last Commit (Keep Changes)
git reset --soft HEAD~1
Discard All Local Changes
git reset --hard HEAD
git clean -fd
Best Practices
Commit Messages
- Use descriptive, clear messages
- Start with a verb (Add, Update, Fix, Remove)
- Be specific about what changed
- Examples:
- ✅ "Add RID conference to Missoula MT on interactive map"
- ✅ "Fix email SMTP configuration and update app password"
- ❌ "Updates"
- ❌ "Fixed stuff"
Before Making Changes
- Always
git pullfirst - Check current status with
git status - Review what you're about to commit with
git diff
After Making Changes
- Test locally if possible
- Review changes with
git statusandgit diff - Commit with clear message
- Push to remote
- Verify on production if critical
Working with Production
- Test changes locally before pushing
- Be cautious with Docker configuration changes
- Monitor logs after deployment
- Keep
.envfile secure (never commit)
Security Notes
- Never commit
.envfile - contains sensitive credentials - Keep access token secure - treat like a password
- Regenerate token if exposed - create new one immediately
- Use app-specific passwords - for Gmail integration
- Review changes before pushing - especially configuration files
Quick Reference Commands
| Task | Command |
|---|---|
| Pull latest changes | git pull |
| Check status | git status |
| View recent commits | git log --oneline -15 |
| View last commit | git show HEAD |
| Stage all changes | git add . |
| Commit changes | git commit -m "message" |
| Push to remote | git push |
| Undo last commit (keep changes) | git reset --soft HEAD~1 |
| Discard local changes | git reset --hard HEAD |
| View file history | git log -- path/to/file |
| Search commits | git log --grep="keyword" |
Useful Git Aliases
Add these to your .gitconfig for shortcuts:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.last "show HEAD"
Then use:
git stinstead ofgit statusgit lginstead ofgit log --oneline --graph --allgit lastinstead ofgit show HEAD