13 KiB
13 KiB
Git Workflow & Memory Bank
Git Configuration
Repository Information
- Repository URL:
https://gitea.sigd.net/chaulmark/finlion-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/Writing_Project/FinLion - Main Branch:
main - Latest Commit:
3fb2204c6f5ca9f8769dc56c1a00079a795e19c2
Token Permissions
The access token has been configured with:
- ✅ Read repository access
- ✅ Write repository access (for pushing changes)
Git Remote Configuration
# Remote is configured with authentication:
origin: https://eliza:3dba996c9eca5b6267f7cd1b0996a94aac1ac0d5@gitea.sigd.net/chaulmark/finlion-website.git
Git User Configuration
user.name=eliza
user.email=eliza@gitea.sigd.net
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/app/page.tsx
# Commit changes with meaningful message
git commit -m "Update homepage: Add new hero section"
# 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/app/page.tsx
# View changes to a file over time
git log -p src/app/page.tsx
# Who changed what in a file
git blame src/app/page.tsx
6. Undoing Changes
# Discard changes to a file (before staging)
git checkout -- src/app/page.tsx
# Unstage a file (keep changes)
git reset HEAD src/app/page.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
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/finlion-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 an email address)
Issue: Token doesn't work
- Cause: Token permissions not properly configured
- Solution: Ensure both read and write repository permissions are enabled
FinLion Website Codebase Overview
Project Architecture
FinLion/
├── Next.js Application (React + TypeScript)
│ ├── src/
│ │ ├── app/ # Next.js App Router pages
│ │ │ ├── page.tsx # Homepage
│ │ │ ├── layout.tsx # Root layout
│ │ │ ├── about/ # About page
│ │ │ ├── services/ # Services page
│ │ │ ├── contact/ # Contact page
│ │ │ └── api/ # API routes
│ │ ├── components/ # React components
│ │ │ ├── home/ # Home-specific components
│ │ │ ├── layout/ # Layout components
│ │ │ ├── shared/ # Shared components
│ │ │ └── ui/ # UI components
│ │ ├── data/ # Data files
│ │ ├── lib/ # Utility functions
│ │ ├── styles/ # Global styles
│ │ └── types/ # TypeScript types
│ └── public/ # Static assets
│ └── images/ # Image files
│
├── Docker Configuration
│ ├── docker-compose.yml # Production orchestration
│ ├── docker-compose.dev.yml # Development environment
│ ├── Dockerfile # Production container
│ └── Dockerfile.dev # Development container
│
├── Documentation
│ └── cline_docs/ # AI assistant documentation
│ ├── memoryBank.md # This memory bank
│ └── gitWorkflow.md # Git workflow guide
│
└── Configuration Files
├── next.config.ts # Next.js configuration
├── tailwind.config.ts # Tailwind CSS config
├── tsconfig.json # TypeScript config
├── package.json # Dependencies
├── pnpm-lock.yaml # Lock file
└── .env # Environment variables (SECRET)
Key Files and Their Purposes
Application Pages (src/app/)
- page.tsx: Homepage/landing page with hero and overview
- layout.tsx: Root layout component (affects all pages)
- about/page.tsx: About page
- services/page.tsx: Services showcase page
- contact/page.tsx: Contact form page
- api/contact/route.ts: Contact form submission API endpoint
Components (src/components/)
- layout/: Header, Navigation, Footer
- home/: Hero, Services sections for homepage
- shared/: Toast notification component
- ui/: Reusable UI components like Button
- Modal.tsx: Modal dialog component
- ServiceCard.tsx: Service display cards
Data & Utilities
- src/data/services.ts: Services data structure
- src/lib/email.ts: Email service integration
- src/lib/rate-limit.ts: Rate limiting logic for API
- src/types/services.ts: TypeScript type definitions
Important Patterns
1. Next.js App Router Structure
src/app/
├── page.tsx # Homepage (/)
├── layout.tsx # Root layout
├── about/
│ └── page.tsx # About page (/about)
├── services/
│ └── page.tsx # Services page (/services)
├── contact/
│ └── page.tsx # Contact page (/contact)
└── api/
└── contact/
└── route.ts # API endpoint (/api/contact)
2. Environment Variables
Critical .env variables:
# Email Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=gmail_app_password
FROM_EMAIL=your-from-email
TO_EMAIL=your-to-email
# Redis Configuration (for rate limiting)
UPSTASH_REDIS_REST_URL=your-redis-url
UPSTASH_REDIS_REST_TOKEN=your-redis-token
3. Services Data Structure
// src/data/services.ts
export const services = [
{
id: 'service-id',
title: 'Service Title',
description: 'Service description',
icon: IconComponent,
features: ['Feature 1', 'Feature 2']
}
]
Development Workflow
Making Changes to the Website
-
Pull latest changes
git pull -
Make your changes
- Edit files as needed
- Test locally with
pnpm dev(runs on http://localhost:3000)
-
Check what changed
git status git diff -
Stage and commit
git add . git commit -m "Descriptive message about changes" -
Push to Gitea
git push
Updating Page Content
-
Identify the correct file:
- Homepage:
src/app/page.tsxorsrc/components/home/Hero.tsx - About:
src/app/about/page.tsx - Services:
src/app/services/page.tsxorsrc/data/services.ts - Contact:
src/app/contact/page.tsx
- Homepage:
-
Edit the content
-
Test locally:
pnpm dev # Visit http://localhost:3000 to verify changes -
Commit and push:
git add src/app/ git commit -m "Update [page]: [description]" git push
Adding New Service
-
Edit services data:
- File:
src/data/services.ts - Add new service object to array
- File:
-
Update services page if needed:
- File:
src/app/services/page.tsx
- File:
-
Test and commit:
git add src/data/services.ts src/app/services/ git commit -m "Add new service: [Service Name]" git push
Updating Styling
-
Identify component:
- Components use Tailwind CSS classes
- Global styles in
src/styles/globals.css
-
Update Tailwind classes or CSS
-
Test and commit:
git add src/ git commit -m "Update styling: [description]" git push
Local Development Commands
Development Server
# Install dependencies (first time only)
pnpm install
# Start development server
pnpm dev
# Opens at http://localhost:3000
# Build for production
pnpm build
# Start production server
pnpm start
# Run linting
pnpm lint
Docker Development
# Start development with Docker
docker compose -f docker-compose.dev.yml up
# Start production with Docker
docker compose up --build -d
# View logs
docker logs [container-name]
# Stop containers
docker compose down
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="homepage"
# Find commits that changed a specific file
git log -- src/app/page.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:
- ✅ "Update homepage hero section with new tagline"
- ✅ "Fix contact form validation and email sending"
- ✅ "Add new financial planning service to services page"
- ❌ "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 with
pnpm devif possible - Review changes with
git statusandgit diff - Commit with clear message
- Push to remote
Working with Next.js
- Test changes locally before pushing
- Verify responsive design on different screen sizes
- Check console for errors in browser
- Test contact form if email changes made
- 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" |
| Start dev server | pnpm dev |
| Build for production | pnpm build |
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
Recent History (Reference Only)
Setup (March 13, 2026)
- Cloned repository from Gitea
- Configured Git authentication with Eliza's credentials
- Set up user configuration (eliza / eliza@gitea.sigd.net)
- Created memory bank and git workflow documentation
- Repository status: Working tree clean, up to date with origin/main