Skip to content

Commit 11bea0e

Browse files
authored
Merge pull request #4 from curtissearle/copilot/fix-3
Setup comprehensive GitHub Copilot Coding Agent development environment
2 parents 7af8b2e + 5562db9 commit 11bea0e

14 files changed

+929
-0
lines changed

.devcontainer/README.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Development Container Configuration
2+
3+
This directory contains the development container configuration for the "Run Until You See" project, optimized for GitHub Copilot Coding Agent.
4+
5+
## Features
6+
7+
- **Node.js 20** with TypeScript support
8+
- **GitHub CLI** for seamless GitHub integration
9+
- **Docker-in-Docker** for containerized workflows
10+
- **Pre-configured VS Code extensions** for optimal development experience
11+
- **GitHub Copilot** integration with enhanced settings
12+
- **Auto port forwarding** for Next.js development (ports 3000, 3001)
13+
14+
## VS Code Extensions Included
15+
16+
- TypeScript Next.js support
17+
- Tailwind CSS IntelliSense
18+
- Prettier code formatter
19+
- ESLint integration
20+
- GitHub Copilot and Copilot Chat
21+
- Auto Rename Tag
22+
- Path IntelliSense
23+
- NPM Scripts runner
24+
25+
## Getting Started
26+
27+
1. **Open in Dev Container**: When you open this repository in VS Code, you'll be prompted to "Reopen in Container"
28+
2. **GitHub Codespaces**: Click "Code" → "Codespaces" → "Create codespace on [branch]"
29+
3. **Manual Setup**: Use the Command Palette (`Ctrl+Shift+P`) and run "Dev Containers: Reopen in Container"
30+
31+
## Environment Features
32+
33+
- Automatic `npm install` on container creation
34+
- Pre-configured formatting and linting rules
35+
- GitHub Copilot enabled for all file types
36+
- Optimized for Next.js development workflow
37+
- Docker support for advanced containerization needs
38+
39+
## Port Configuration
40+
41+
- **Port 3000**: Next.js development server (auto-forwarded with notifications)
42+
- **Port 3001**: Additional Next.js services (auto-forwarded silently)
43+
44+
The development environment is configured to automatically detect and forward these ports when running Next.js development server.

.devcontainer/devcontainer.json

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"name": "Run Until You See - Next.js Dev Environment",
3+
"image": "mcr.microsoft.com/devcontainers/typescript-node:20",
4+
"features": {
5+
"ghcr.io/devcontainers/features/github-cli:1": {},
6+
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
7+
},
8+
"customizations": {
9+
"vscode": {
10+
"extensions": [
11+
"ms-vscode.vscode-typescript-next",
12+
"bradlc.vscode-tailwindcss",
13+
"esbenp.prettier-vscode",
14+
"ms-vscode.vscode-eslint",
15+
"github.copilot",
16+
"github.copilot-chat",
17+
"ms-vscode.vscode-json",
18+
"formulahendry.auto-rename-tag",
19+
"christian-kohler.path-intellisense",
20+
"ms-vscode.vscode-npm-scripts"
21+
],
22+
"settings": {
23+
"typescript.suggest.autoImports": true,
24+
"typescript.updateImportsOnFileMove.enabled": "always",
25+
"editor.codeActionsOnSave": {
26+
"source.fixAll.eslint": "explicit",
27+
"source.organizeImports": "explicit"
28+
},
29+
"editor.formatOnSave": true,
30+
"editor.defaultFormatter": "esbenp.prettier-vscode",
31+
"[typescript]": {
32+
"editor.defaultFormatter": "esbenp.prettier-vscode"
33+
},
34+
"[typescriptreact]": {
35+
"editor.defaultFormatter": "esbenp.prettier-vscode"
36+
},
37+
"[javascript]": {
38+
"editor.defaultFormatter": "esbenp.prettier-vscode"
39+
},
40+
"[javascriptreact]": {
41+
"editor.defaultFormatter": "esbenp.prettier-vscode"
42+
},
43+
"[json]": {
44+
"editor.defaultFormatter": "esbenp.prettier-vscode"
45+
},
46+
"github.copilot.enable": {
47+
"*": true,
48+
"yaml": true,
49+
"plaintext": true,
50+
"markdown": true
51+
},
52+
"github.copilot.editor.enableAutoCompletions": true,
53+
"workbench.colorTheme": "Default Dark+",
54+
"terminal.integrated.defaultProfile.linux": "bash"
55+
}
56+
}
57+
},
58+
"forwardPorts": [3000, 3001],
59+
"portsAttributes": {
60+
"3000": {
61+
"label": "Next.js App",
62+
"onAutoForward": "notify"
63+
},
64+
"3001": {
65+
"label": "Next.js Dev Server",
66+
"onAutoForward": "silent"
67+
}
68+
},
69+
"postCreateCommand": "npm install",
70+
"remoteUser": "node"
71+
}

.github/codespaces.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Codespaces configuration for optimal GitHub Copilot Coding Agent experience
2+
machine:
3+
# Use 4-core machine for better performance with Next.js and TypeScript
4+
type: 4core
5+
6+
# Prebuild configuration for faster startup
7+
prebuild:
8+
# Run npm install during prebuild for faster codespace startup
9+
commands:
10+
- npm install
11+
# Prebuild when package.json changes
12+
triggers:
13+
- package.json
14+
- package-lock.json
15+
16+
# Port forwarding configuration
17+
ports:
18+
# Next.js development server
19+
3000:
20+
visibility: public
21+
description: "Next.js Development Server"
22+
# Additional port for services
23+
3001:
24+
visibility: private
25+
description: "Additional Next.js Services"
26+
27+
# Environment variables for development
28+
env:
29+
NODE_ENV: development
30+
NEXT_TELEMETRY_DISABLED: 1
31+
32+
# Poststart commands
33+
postStartCommand: |
34+
echo "🚀 Codespace is ready for development!"
35+
echo "Run 'npm run dev' to start the Next.js development server"
36+
echo "GitHub Copilot is enabled and configured for optimal development experience"

.github/copilot-instructions.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# GitHub Copilot Instructions for "Run Until You See"
2+
3+
You are working on a Next.js 15 application called "Run Until You See" with the following technology stack and preferences:
4+
5+
## Technology Stack
6+
- **Next.js 15.4.1** with App Router architecture
7+
- **TypeScript** for type safety
8+
- **Tailwind CSS v4** for styling with dark mode support
9+
- **React 19** with modern patterns
10+
- **ESLint** with Next.js strict configuration
11+
12+
## Code Style Preferences
13+
- Use TypeScript with strict type checking
14+
- Prefer functional components with hooks
15+
- Use Tailwind CSS for all styling (avoid CSS modules or styled-components)
16+
- Follow Next.js App Router conventions
17+
- Use meaningful variable and function names
18+
- Implement responsive design by default
19+
- Prefer modern JavaScript features (ES2022+)
20+
21+
## File Organization
22+
- Place components in appropriate directories
23+
- Use proper import/export conventions
24+
- Follow Next.js file-based routing in the `app/` directory
25+
- Keep components small and focused
26+
- Use TypeScript interfaces for props and data structures
27+
28+
## Best Practices to Follow
29+
- Always include proper TypeScript types
30+
- Use Next.js built-in optimization features (Image, Link, etc.)
31+
- Implement proper error handling and loading states
32+
- Follow accessibility guidelines (semantic HTML, ARIA labels)
33+
- Use proper SEO practices with Next.js metadata API
34+
- Implement proper form validation when needed
35+
- Use React best practices (keys for lists, proper useEffect dependencies)
36+
37+
## Tailwind CSS Guidelines
38+
- Use Tailwind utility classes instead of custom CSS
39+
- Implement dark mode support using Tailwind's dark: prefix
40+
- Use responsive design with Tailwind's responsive prefixes (sm:, md:, lg:, xl:)
41+
- Prefer Tailwind's color palette and spacing system
42+
- Use Tailwind's component patterns for reusable styles
43+
44+
## Next.js Specific Practices
45+
- Use the App Router architecture
46+
- Implement proper metadata for SEO
47+
- Use Server Components by default, Client Components when needed
48+
- Follow Next.js data fetching patterns
49+
- Use proper error boundaries and not-found pages
50+
- Implement proper loading UI patterns
51+
52+
## Common Patterns to Use
53+
- Server Components for static content and data fetching
54+
- Client Components for interactive elements (use "use client" directive)
55+
- Proper form handling with Server Actions when appropriate
56+
- Consistent error handling across the application
57+
- Proper TypeScript interfaces for API responses and component props
58+
59+
When suggesting code, always consider:
60+
1. Type safety with TypeScript
61+
2. Performance optimization
62+
3. Accessibility
63+
4. Mobile-first responsive design
64+
5. SEO implications
65+
6. Code maintainability and readability
66+
67+
Feel free to suggest modern React patterns, Next.js optimizations, and Tailwind CSS utilities that improve the development experience and application performance.

.prettierignore

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Dependencies
2+
node_modules/
3+
.pnp
4+
.pnp.js
5+
6+
# Production builds
7+
.next/
8+
out/
9+
build/
10+
dist/
11+
12+
# Environment files
13+
.env*
14+
15+
# Logs
16+
*.log
17+
npm-debug.log*
18+
yarn-debug.log*
19+
yarn-error.log*
20+
.pnpm-debug.log*
21+
22+
# Runtime data
23+
pids
24+
*.pid
25+
*.seed
26+
*.pid.lock
27+
28+
# Coverage directory used by tools like istanbul
29+
coverage/
30+
*.lcov
31+
32+
# OS generated files
33+
.DS_Store
34+
.DS_Store?
35+
._*
36+
.Spotlight-V100
37+
.Trashes
38+
ehthumbs.db
39+
Thumbs.db
40+
41+
# Lock files (should not be formatted)
42+
package-lock.json
43+
yarn.lock
44+
pnpm-lock.yaml
45+
46+
# Auto-generated files
47+
next-env.d.ts
48+
*.d.ts
49+
50+
# Git
51+
.git/
52+
53+
# VSCode
54+
.vscode/
55+
56+
# Temporary files
57+
*.tmp
58+
*.temp

.prettierrc.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"semi": true,
3+
"trailingComma": "es5",
4+
"singleQuote": false,
5+
"printWidth": 80,
6+
"tabWidth": 2,
7+
"useTabs": false,
8+
"bracketSpacing": true,
9+
"bracketSameLine": false,
10+
"arrowParens": "always",
11+
"endOfLine": "lf",
12+
"quoteProps": "as-needed",
13+
"proseWrap": "preserve",
14+
"htmlWhitespaceSensitivity": "css",
15+
"embeddedLanguageFormatting": "auto",
16+
"plugins": ["prettier-plugin-tailwindcss"],
17+
"tailwindConfig": "./tailwind.config.ts",
18+
"tailwindFunctions": ["clsx", "cn", "cva"]
19+
}

.vscode/extensions.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"recommendations": [
3+
"ms-vscode.vscode-typescript-next",
4+
"bradlc.vscode-tailwindcss",
5+
"esbenp.prettier-vscode",
6+
"ms-vscode.vscode-eslint",
7+
"github.copilot",
8+
"github.copilot-chat",
9+
"ms-vscode.vscode-json",
10+
"formulahendry.auto-rename-tag",
11+
"christian-kohler.path-intellisense",
12+
"ms-vscode.vscode-npm-scripts",
13+
"ms-vscode.vscode-typescript-next",
14+
"ms-vscode.vscode-js-debug",
15+
"gruntfuggly.todo-tree",
16+
"streetsidesoftware.code-spell-checker",
17+
"ms-vscode.vscode-markdown",
18+
"yzhang.markdown-all-in-one"
19+
],
20+
"unwantedRecommendations": [
21+
"ms-vscode.vscode-typescript",
22+
"hookyqr.beautify"
23+
]
24+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"folders": [
3+
{
4+
"path": "."
5+
}
6+
],
7+
"settings": {
8+
"typescript.preferences.includePackageJsonAutoImports": "auto",
9+
"typescript.suggest.completeFunctionCalls": true,
10+
"github.copilot.advanced": {
11+
"length": 500,
12+
"temperature": 0.1
13+
},
14+
"files.associations": {
15+
"*.css": "tailwindcss",
16+
"*.tsx": "typescriptreact",
17+
"*.ts": "typescript"
18+
},
19+
"emmet.includeLanguages": {
20+
"typescriptreact": "html"
21+
},
22+
"tailwindCSS.experimental.classRegex": [
23+
["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
24+
["cx\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"]
25+
]
26+
},
27+
"extensions": {
28+
"recommendations": [
29+
"ms-vscode.vscode-typescript-next",
30+
"bradlc.vscode-tailwindcss",
31+
"esbenp.prettier-vscode",
32+
"ms-vscode.vscode-eslint",
33+
"github.copilot",
34+
"github.copilot-chat",
35+
"ms-vscode.vscode-json",
36+
"formulahendry.auto-rename-tag",
37+
"christian-kohler.path-intellisense",
38+
"ms-vscode.vscode-npm-scripts",
39+
"ms-vscode.vscode-typescript-next"
40+
]
41+
}
42+
}

0 commit comments

Comments
 (0)