Add AI assistant documentation: memory bank and git workflow
This commit is contained in:
parent
3fb2204c6f
commit
10c4e88a0f
2 changed files with 975 additions and 0 deletions
545
cline_docs/gitWorkflow.md
Normal file
545
cline_docs/gitWorkflow.md
Normal file
|
|
@ -0,0 +1,545 @@
|
||||||
|
# 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
|
||||||
|
```bash
|
||||||
|
# Remote is configured with authentication:
|
||||||
|
origin: https://eliza:3dba996c9eca5b6267f7cd1b0996a94aac1ac0d5@gitea.sigd.net/chaulmark/finlion-website.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### Git User Configuration
|
||||||
|
```bash
|
||||||
|
user.name=eliza
|
||||||
|
user.email=eliza@gitea.sigd.net
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Git Workflows
|
||||||
|
|
||||||
|
### 1. Checking Repository Status
|
||||||
|
```bash
|
||||||
|
# Check current status
|
||||||
|
git status
|
||||||
|
|
||||||
|
# View current branch
|
||||||
|
git branch
|
||||||
|
|
||||||
|
# View remote branches
|
||||||
|
git branch -r
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Pulling Latest Changes
|
||||||
|
```bash
|
||||||
|
# Pull from main branch (recommended before starting work)
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# Or simply
|
||||||
|
git pull
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Viewing Changes History
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
|
||||||
|
1. **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
|
||||||
|
|
||||||
|
2. **Update Git Remote:**
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Test Connection:**
|
||||||
|
```bash
|
||||||
|
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:repository` and `write:repository` permissions
|
||||||
|
|
||||||
|
**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:
|
||||||
|
```env
|
||||||
|
# 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
|
||||||
|
```typescript
|
||||||
|
// 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
|
||||||
|
|
||||||
|
1. **Pull latest changes**
|
||||||
|
```bash
|
||||||
|
git pull
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Make your changes**
|
||||||
|
- Edit files as needed
|
||||||
|
- Test locally with `pnpm dev` (runs on http://localhost:3000)
|
||||||
|
|
||||||
|
3. **Check what changed**
|
||||||
|
```bash
|
||||||
|
git status
|
||||||
|
git diff
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Stage and commit**
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
git commit -m "Descriptive message about changes"
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Push to Gitea**
|
||||||
|
```bash
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Updating Page Content
|
||||||
|
|
||||||
|
1. **Identify the correct file:**
|
||||||
|
- Homepage: `src/app/page.tsx` or `src/components/home/Hero.tsx`
|
||||||
|
- About: `src/app/about/page.tsx`
|
||||||
|
- Services: `src/app/services/page.tsx` or `src/data/services.ts`
|
||||||
|
- Contact: `src/app/contact/page.tsx`
|
||||||
|
|
||||||
|
2. **Edit the content**
|
||||||
|
|
||||||
|
3. **Test locally:**
|
||||||
|
```bash
|
||||||
|
pnpm dev
|
||||||
|
# Visit http://localhost:3000 to verify changes
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Commit and push:**
|
||||||
|
```bash
|
||||||
|
git add src/app/
|
||||||
|
git commit -m "Update [page]: [description]"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Adding New Service
|
||||||
|
|
||||||
|
1. **Edit services data:**
|
||||||
|
- File: `src/data/services.ts`
|
||||||
|
- Add new service object to array
|
||||||
|
|
||||||
|
2. **Update services page if needed:**
|
||||||
|
- File: `src/app/services/page.tsx`
|
||||||
|
|
||||||
|
3. **Test and commit:**
|
||||||
|
```bash
|
||||||
|
git add src/data/services.ts src/app/services/
|
||||||
|
git commit -m "Add new service: [Service Name]"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Updating Styling
|
||||||
|
|
||||||
|
1. **Identify component:**
|
||||||
|
- Components use Tailwind CSS classes
|
||||||
|
- Global styles in `src/styles/globals.css`
|
||||||
|
|
||||||
|
2. **Update Tailwind classes or CSS**
|
||||||
|
|
||||||
|
3. **Test and commit:**
|
||||||
|
```bash
|
||||||
|
git add src/
|
||||||
|
git commit -m "Update styling: [description]"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
### Local Development Commands
|
||||||
|
|
||||||
|
#### Development Server
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
```bash
|
||||||
|
git log --oneline --graph --all -15
|
||||||
|
```
|
||||||
|
|
||||||
|
#### See What Files Changed in Last Commit
|
||||||
|
```bash
|
||||||
|
git show --stat HEAD
|
||||||
|
```
|
||||||
|
|
||||||
|
#### See Full Changes in Last Commit
|
||||||
|
```bash
|
||||||
|
git show HEAD
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Compare Two Commits
|
||||||
|
```bash
|
||||||
|
git diff abc123 def456
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Search Commit History
|
||||||
|
```bash
|
||||||
|
# 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)
|
||||||
|
```bash
|
||||||
|
git reset --soft HEAD~1
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Discard All Local Changes
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
1. Always `git pull` first
|
||||||
|
2. Check current status with `git status`
|
||||||
|
3. Review what you're about to commit with `git diff`
|
||||||
|
|
||||||
|
### After Making Changes
|
||||||
|
1. Test locally with `pnpm dev` if possible
|
||||||
|
2. Review changes with `git status` and `git diff`
|
||||||
|
3. Commit with clear message
|
||||||
|
4. 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 `.env` file secure (never commit)
|
||||||
|
|
||||||
|
## Security Notes
|
||||||
|
|
||||||
|
- **Never commit `.env` file** - 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:
|
||||||
|
```bash
|
||||||
|
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 st` instead of `git status`
|
||||||
|
- `git lg` instead of `git log --oneline --graph --all`
|
||||||
|
- `git last` instead of `git 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
|
||||||
430
cline_docs/memoryBank.md
Normal file
430
cline_docs/memoryBank.md
Normal file
|
|
@ -0,0 +1,430 @@
|
||||||
|
# FinLion Website - AI Assistant Memory Bank
|
||||||
|
|
||||||
|
## IMPORTANT: User Profile & Expectations
|
||||||
|
|
||||||
|
**USER: Eliza**
|
||||||
|
- **Experience Level**: Novice web developer, NOT interested in learning web development
|
||||||
|
- **Role**: Project owner and content provider
|
||||||
|
- **Expectation**: AI assistant (Cline) handles ALL technical work
|
||||||
|
- **User Interaction**: Provides content, approves changes, makes high-level requests only
|
||||||
|
- **NO USER EDUCATION**: Do not teach or explain technical concepts unless specifically asked
|
||||||
|
|
||||||
|
## AI Assistant Responsibilities
|
||||||
|
|
||||||
|
### What I (AI) Do Autonomously:
|
||||||
|
1. ✅ **Edit/Create/Delete Files**: All code changes without user intervention
|
||||||
|
2. ✅ **Git Operations**: Pull, commit, push using Eliza's credentials
|
||||||
|
3. ✅ **Local Testing**: Test changes before deployment
|
||||||
|
4. ✅ **Troubleshooting**: Debug and fix issues independently
|
||||||
|
5. ✅ **Documentation**: Update memory bank after significant changes
|
||||||
|
6. ✅ **Dependencies**: Install and manage npm/pnpm packages
|
||||||
|
|
||||||
|
### What User Does:
|
||||||
|
1. 📝 **Content Requests**: "Update homepage", "Add new service"
|
||||||
|
2. ✅ **Approve Actions**: Review and approve proposed changes
|
||||||
|
3. 📦 **Provide Assets**: Supply images, text, content when needed
|
||||||
|
4. 🎯 **Strategic Decisions**: Final say on design/content direction
|
||||||
|
|
||||||
|
## Critical Credentials & Access
|
||||||
|
|
||||||
|
### Git Access (Eliza's Account)
|
||||||
|
- **Repository**: https://gitea.sigd.net/chaulmark/finlion-website
|
||||||
|
- **Username**: `eliza`
|
||||||
|
- **Token**: `3dba996c9eca5b6267f7cd1b0996a94aac1ac0d5` (created 3/5/2026)
|
||||||
|
- **Local Path**: `/Users/Eliza/Writing_Project/FinLion`
|
||||||
|
- **Remote**: Configured with authentication on 3/13/2026
|
||||||
|
|
||||||
|
### Git Configuration
|
||||||
|
- **User Name**: eliza
|
||||||
|
- **User Email**: eliza@gitea.sigd.net
|
||||||
|
- **Branch**: main
|
||||||
|
- **Status**: Working tree clean, up to date with origin/main
|
||||||
|
|
||||||
|
## AI Workflow for Changes
|
||||||
|
|
||||||
|
### Standard Change Process (I Handle Everything)
|
||||||
|
1. **User Request**: User says "Update homepage" or "Add service"
|
||||||
|
2. **Pull Latest**: `git pull` to ensure working with latest code
|
||||||
|
3. **Make Changes**: Edit necessary files (no user involvement)
|
||||||
|
4. **Test Locally**: Run `pnpm dev` to verify changes work
|
||||||
|
5. **Commit & Push**:
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
git commit -m "Descriptive message"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
6. **Report**: Tell user "Done! Changes pushed to repository"
|
||||||
|
|
||||||
|
### Git Commands I Use (User Never Runs These)
|
||||||
|
```bash
|
||||||
|
# Start every task
|
||||||
|
git pull
|
||||||
|
|
||||||
|
# After making changes
|
||||||
|
git add .
|
||||||
|
git commit -m "Clear description of what changed"
|
||||||
|
git push
|
||||||
|
|
||||||
|
# Check what changed (for my reference)
|
||||||
|
git status
|
||||||
|
git diff
|
||||||
|
git log --oneline -15
|
||||||
|
```
|
||||||
|
|
||||||
|
## Token Management (If Needed)
|
||||||
|
|
||||||
|
### When Token Expires:
|
||||||
|
**What I Tell User**: "Your Git access token has expired. Please generate a new one:"
|
||||||
|
|
||||||
|
**User Steps** (only these 3):
|
||||||
|
1. Go to https://gitea.sigd.net
|
||||||
|
2. Settings → Applications → Access Tokens → Generate New Token
|
||||||
|
3. Copy the new token and give it to me
|
||||||
|
|
||||||
|
**What I Do**: Update the git remote configuration with new token
|
||||||
|
```bash
|
||||||
|
git remote set-url origin https://eliza:NEW_TOKEN@gitea.sigd.net/chaulmark/finlion-website.git
|
||||||
|
git pull
|
||||||
|
```
|
||||||
|
|
||||||
|
## Website Technical Stack
|
||||||
|
|
||||||
|
### Frontend Technologies
|
||||||
|
- **React**: 19.0.0 - Core UI framework
|
||||||
|
- **Next.js**: 15.0.4 - React framework with App Router
|
||||||
|
- **TypeScript**: Latest - Type safety and enhanced development
|
||||||
|
- **Tailwind CSS**: Latest - Utility-first CSS framework
|
||||||
|
- **Framer Motion**: Latest - Animations and micro-interactions
|
||||||
|
|
||||||
|
### Backend Technologies
|
||||||
|
- **Next.js API Routes**: Built-in API endpoints
|
||||||
|
- **Nodemailer**: Email service integration
|
||||||
|
- **Upstash Redis**: Rate limiting and caching
|
||||||
|
|
||||||
|
### Development Tools
|
||||||
|
- **pnpm**: 9.14.2 - Package manager
|
||||||
|
- **Docker**: Containerization for development and production
|
||||||
|
- **ESLint**: Code quality enforcement
|
||||||
|
|
||||||
|
### Architecture
|
||||||
|
- **Next.js App Router**: Modern routing system
|
||||||
|
- **Server-Side Rendering**: For better SEO and performance
|
||||||
|
- **API Routes**: Backend functionality within Next.js
|
||||||
|
- **Component-Based**: Reusable React components
|
||||||
|
|
||||||
|
## Website Components (What I Manage)
|
||||||
|
|
||||||
|
### Pages (src/app/)
|
||||||
|
1. **page.tsx** (root): Homepage/landing page
|
||||||
|
2. **about/page.tsx**: About page
|
||||||
|
3. **services/page.tsx**: Services showcase
|
||||||
|
4. **contact/page.tsx**: Contact form
|
||||||
|
|
||||||
|
### Key Components (src/components/)
|
||||||
|
|
||||||
|
#### Layout Components (components/layout/)
|
||||||
|
- **Header.tsx**: Site header with branding
|
||||||
|
- **Navigation.tsx**: Main navigation menu
|
||||||
|
- **Footer.tsx**: Site footer with links and info
|
||||||
|
|
||||||
|
#### Home Components (components/home/)
|
||||||
|
- **Hero.tsx**: Homepage hero section
|
||||||
|
- **Services.tsx**: Services overview on homepage
|
||||||
|
|
||||||
|
#### Shared Components (components/shared/)
|
||||||
|
- **Toast.tsx**: Notification system
|
||||||
|
|
||||||
|
#### UI Components (components/ui/)
|
||||||
|
- **Button.tsx**: Reusable button component
|
||||||
|
|
||||||
|
#### Other Components
|
||||||
|
- **Modal.tsx**: Modal dialog component
|
||||||
|
- **ServiceCard.tsx**: Service display card
|
||||||
|
|
||||||
|
### API Routes (src/app/api/)
|
||||||
|
- **contact/route.ts**: Contact form submission endpoint with rate limiting
|
||||||
|
|
||||||
|
### Key Features I Maintain
|
||||||
|
|
||||||
|
#### Contact Form (contact/page.tsx + api/contact/route.ts)
|
||||||
|
- Professional contact form with validation
|
||||||
|
- Rate-limited API endpoint for security
|
||||||
|
- Email integration via Nodemailer
|
||||||
|
- Success/error notifications
|
||||||
|
|
||||||
|
**When User Says**: "Fix contact form" or "Email not working"
|
||||||
|
|
||||||
|
**What I Do**:
|
||||||
|
1. Check `.env` file for email configuration
|
||||||
|
2. Verify API route is working
|
||||||
|
3. Test form submission locally
|
||||||
|
4. Fix any issues in contact form or API
|
||||||
|
5. Test email delivery
|
||||||
|
6. Commit and push changes
|
||||||
|
|
||||||
|
#### Services Page (services/page.tsx)
|
||||||
|
- Service cards displaying offerings
|
||||||
|
- Responsive layout
|
||||||
|
- Professional design
|
||||||
|
|
||||||
|
**When User Says**: "Add new service" or "Update service"
|
||||||
|
|
||||||
|
**What I Do**:
|
||||||
|
1. Open `src/data/services.ts` or `src/app/services/page.tsx`
|
||||||
|
2. Add/update service information
|
||||||
|
3. Ensure proper formatting and styling
|
||||||
|
4. Test locally to verify appearance
|
||||||
|
5. Commit: "Add/Update service: [Service Name]"
|
||||||
|
6. Push changes
|
||||||
|
|
||||||
|
## Environment Variables (.env)
|
||||||
|
|
||||||
|
**Critical**: Never commit this file!
|
||||||
|
|
||||||
|
```env
|
||||||
|
# Email Configuration
|
||||||
|
SMTP_HOST=your-smtp-host
|
||||||
|
SMTP_PORT=your-smtp-port
|
||||||
|
SMTP_USER=your-smtp-user
|
||||||
|
SMTP_PASS=your-smtp-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
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development Commands
|
||||||
|
|
||||||
|
### Local Development
|
||||||
|
```bash
|
||||||
|
# Install dependencies
|
||||||
|
pnpm install
|
||||||
|
|
||||||
|
# Start development server (port 3000)
|
||||||
|
pnpm dev
|
||||||
|
|
||||||
|
# Build for production
|
||||||
|
pnpm build
|
||||||
|
|
||||||
|
# Start production server
|
||||||
|
pnpm start
|
||||||
|
|
||||||
|
# Lint code
|
||||||
|
pnpm lint
|
||||||
|
```
|
||||||
|
|
||||||
|
### Docker Commands
|
||||||
|
```bash
|
||||||
|
# Development with Docker
|
||||||
|
docker compose -f docker-compose.dev.yml up
|
||||||
|
|
||||||
|
# Production with Docker
|
||||||
|
docker compose up --build -d
|
||||||
|
|
||||||
|
# View logs
|
||||||
|
docker logs finlion-web
|
||||||
|
```
|
||||||
|
|
||||||
|
## Task Execution Patterns (AI Internal Process)
|
||||||
|
|
||||||
|
### Task: "Update Homepage Content"
|
||||||
|
```
|
||||||
|
1. User Request: "Change the hero text on homepage"
|
||||||
|
2. I pull latest: git pull
|
||||||
|
3. I identify correct file: src/components/home/Hero.tsx or src/app/page.tsx
|
||||||
|
4. I make the content changes
|
||||||
|
5. I test locally: pnpm dev (verify changes look good)
|
||||||
|
6. I commit: "Update homepage: change hero text"
|
||||||
|
7. I push: git push
|
||||||
|
8. I report: "Done! Homepage updated and pushed to repository"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Task: "Add New Service"
|
||||||
|
```
|
||||||
|
1. User Request: "Add [Service Name] to services page"
|
||||||
|
2. User provides: Service description, details
|
||||||
|
3. I pull latest: git pull
|
||||||
|
4. I open src/data/services.ts or relevant file
|
||||||
|
5. I add the new service entry
|
||||||
|
6. I test locally: pnpm dev (verify service displays correctly)
|
||||||
|
7. I commit: "Add new service: [Service Name]"
|
||||||
|
8. I push: git push
|
||||||
|
9. I report: "Done! New service added to services page"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Task: "Fix Contact Form"
|
||||||
|
```
|
||||||
|
1. User reports: "Contact form not working"
|
||||||
|
2. I pull latest: git pull
|
||||||
|
3. I diagnose issue:
|
||||||
|
- Check src/app/contact/page.tsx (frontend)
|
||||||
|
- Check src/app/api/contact/route.ts (backend)
|
||||||
|
- Verify .env email configuration
|
||||||
|
4. I fix the problem
|
||||||
|
5. I test locally: pnpm dev, submit test form
|
||||||
|
6. I commit: "Fix contact form: [description of fix]"
|
||||||
|
7. I push: git push
|
||||||
|
8. I report: "Fixed! Contact form is working now. [Brief explanation]"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Task: "Update Styling/Design"
|
||||||
|
```
|
||||||
|
1. User Request: "Change button color" or "Update layout"
|
||||||
|
2. I pull latest: git pull
|
||||||
|
3. I identify correct component or style file
|
||||||
|
4. I make styling changes (Tailwind CSS classes)
|
||||||
|
5. I test locally: pnpm dev (verify visual changes)
|
||||||
|
6. I commit: "Update styling: [description]"
|
||||||
|
7. I push: git push
|
||||||
|
8. I report: "Done! Design changes applied"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Task: "Install New Package/Dependency"
|
||||||
|
```
|
||||||
|
1. User Request: "Add animation library" or "Need new feature"
|
||||||
|
2. I pull latest: git pull
|
||||||
|
3. I install package: pnpm add [package-name]
|
||||||
|
4. I implement the feature using the package
|
||||||
|
5. I test locally: pnpm dev
|
||||||
|
6. I commit: "Add [package-name] and implement [feature]"
|
||||||
|
7. I push: git push
|
||||||
|
8. I report: "Done! [Feature] added and working"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Critical Files I Work With
|
||||||
|
|
||||||
|
### Main Code Files
|
||||||
|
- `src/app/page.tsx` - Homepage
|
||||||
|
- `src/app/about/page.tsx` - About page
|
||||||
|
- `src/app/services/page.tsx` - Services page
|
||||||
|
- `src/app/contact/page.tsx` - Contact page
|
||||||
|
- `src/app/layout.tsx` - Root layout (affects all pages)
|
||||||
|
- `src/app/api/contact/route.ts` - Contact form API endpoint
|
||||||
|
- `src/data/services.ts` - Services data
|
||||||
|
- `src/components/` - All React components
|
||||||
|
- `.env` - Environment variables (SECRETS - never commit!)
|
||||||
|
- `.env.example` - Environment variable template
|
||||||
|
|
||||||
|
### Configuration Files
|
||||||
|
- `package.json` - Dependencies and scripts
|
||||||
|
- `next.config.ts` - Next.js configuration
|
||||||
|
- `tailwind.config.ts` - Tailwind CSS configuration
|
||||||
|
- `tsconfig.json` - TypeScript configuration
|
||||||
|
- `docker-compose.yml` - Production Docker setup
|
||||||
|
- `docker-compose.dev.yml` - Development Docker setup
|
||||||
|
|
||||||
|
### Asset Directories
|
||||||
|
- `public/` - Static assets (images, icons, etc.)
|
||||||
|
- `public/images/` - Image files
|
||||||
|
- `src/styles/globals.css` - Global CSS styles
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
```
|
||||||
|
/Users/Eliza/Writing_Project/FinLion/
|
||||||
|
├── 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/reusable components
|
||||||
|
│ │ └── ui/ # UI components
|
||||||
|
│ ├── data/ # Data files
|
||||||
|
│ ├── lib/ # Utility functions
|
||||||
|
│ ├── styles/ # CSS/styling files
|
||||||
|
│ └── types/ # TypeScript type definitions
|
||||||
|
├── public/ # Static assets
|
||||||
|
│ └── images/ # Image files
|
||||||
|
├── cline_docs/ # Documentation (this file)
|
||||||
|
├── .env # Environment variables (SECRET)
|
||||||
|
├── .env.example # Env template
|
||||||
|
├── package.json # Dependencies
|
||||||
|
├── pnpm-lock.yaml # Lock file
|
||||||
|
├── next.config.ts # Next.js config
|
||||||
|
├── tailwind.config.ts # Tailwind config
|
||||||
|
├── tsconfig.json # TypeScript config
|
||||||
|
├── docker-compose.yml # Production Docker
|
||||||
|
└── docker-compose.dev.yml # Development Docker
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Issues & AI Solutions
|
||||||
|
|
||||||
|
### Issue: "Contact form not working"
|
||||||
|
**What I Do**: Check API route, verify .env email settings, test form submission, fix and push changes
|
||||||
|
|
||||||
|
### Issue: "Page not displaying correctly"
|
||||||
|
**What I Do**: Check component files, verify Tailwind classes, test responsive design, fix and push
|
||||||
|
|
||||||
|
### Issue: "Dependencies issue"
|
||||||
|
**What I Do**: Run `pnpm install`, check for version conflicts, update dependencies if needed, test and push
|
||||||
|
|
||||||
|
### Issue: "Build errors"
|
||||||
|
**What I Do**: Run `pnpm build` locally, identify errors, fix TypeScript/import issues, verify build succeeds, push
|
||||||
|
|
||||||
|
### Issue: "Images not loading"
|
||||||
|
**What I Do**: Check public/ directory, verify file paths, ensure proper Next.js Image component usage, fix and push
|
||||||
|
|
||||||
|
### Issue: "Git token expired"
|
||||||
|
**What I Tell User**: "Please generate new token at gitea.sigd.net → Settings → Applications → Access Tokens"
|
||||||
|
**What I Do**: Update git remote with new token when provided
|
||||||
|
|
||||||
|
## Communication Style
|
||||||
|
|
||||||
|
### Good Responses (User-Friendly):
|
||||||
|
✅ "Done! I've updated the homepage hero text. Changes are pushed to the repository."
|
||||||
|
✅ "Fixed the contact form - it was a configuration issue. Email now works properly!"
|
||||||
|
✅ "I've added the new service to your services page. It's ready for deployment."
|
||||||
|
|
||||||
|
### Bad Responses (Too Technical):
|
||||||
|
❌ "I updated the Hero.tsx component in src/components/home/ directory..."
|
||||||
|
❌ "The SMTP_PORT environment variable was incorrectly set to 465..."
|
||||||
|
❌ "I modified the ServiceCard props interface to accept a new type..."
|
||||||
|
|
||||||
|
**Rule**: Report WHAT was done and RESULTS, not HOW it was done technically
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
### User Says → AI Does
|
||||||
|
- "Update [page] content" → Edit page file, test locally, commit, push
|
||||||
|
- "Add new service" → Edit services data/page, test, commit, push
|
||||||
|
- "Fix contact form" → Diagnose, fix API/form/env, test, commit, push
|
||||||
|
- "Change styling" → Update Tailwind classes, test, commit, push
|
||||||
|
- "Add feature" → Install packages if needed, implement, test, commit, push
|
||||||
|
- "Images not working" → Check paths, fix issues, commit, push
|
||||||
|
|
||||||
|
### AI Never Asks User To:
|
||||||
|
- ❌ Run git commands
|
||||||
|
- ❌ Edit code files
|
||||||
|
- ❌ Install dependencies
|
||||||
|
- ❌ Run development server
|
||||||
|
- ❌ Debug code
|
||||||
|
- ❌ Configure Docker
|
||||||
|
|
||||||
|
### AI Always:
|
||||||
|
- ✅ Pull before starting work
|
||||||
|
- ✅ Test locally when possible
|
||||||
|
- ✅ Commit with clear messages
|
||||||
|
- ✅ Push to Git repository
|
||||||
|
- ✅ Report completion simply
|
||||||
|
- ✅ Update this memory bank after significant changes
|
||||||
|
|
||||||
|
## Recent History (Reference Only)
|
||||||
|
- **March 13, 2026**:
|
||||||
|
- Cloned repository from Gitea
|
||||||
|
- Configured Git authentication with Eliza's credentials
|
||||||
|
- Set up git user configuration (eliza / eliza@gitea.sigd.net)
|
||||||
|
- Created comprehensive memory bank based on DeafGain template
|
||||||
|
- Repository status: Working tree clean, up to date with origin/main
|
||||||
|
- Ready for development work
|
||||||
|
|
||||||
|
## Status
|
||||||
|
🟢 **System Ready** - Repository cloned, git configured, ready for development
|
||||||
|
🤖 **AI Assistant Ready** - Waiting for user requests to make changes, add content, or fix issues
|
||||||
|
📝 **Next Steps**: User to provide content requests or development tasks
|
||||||
Loading…
Add table
Reference in a new issue