Initial commit

This commit is contained in:
2026-06-20 04:28:24 +03:00
committed by GitHub
commit 07f02e0958
29 changed files with 1700 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
## Step 1: Prepare your modern multi-tier application exercise
Welcome to your **"Build applications with GitHub Copilot agent mode"** exercise! :robot:
In this exercise, you will build a **modern multi-tier application** for OctoFit Tracker:
- **Presentation tier:** React 19
- **Logic tier:** Node.js + Express + TypeScript
- **Data tier:** MongoDB
### :keyboard: Activity: Create and publish your working branch
1. Open your Codespace for your repository copy.
1. Open Copilot Chat and switch to **Agent** mode.
1. Run this prompt:
> ![Static Badge](https://img.shields.io/badge/-Prompt-text?style=flat-square&logo=github%20copilot&labelColor=512a97&color=ecd8ff)
>
> ```prompt
> Please create and publish a new Git branch called build-octofit-app
> ```
1. Confirm the active branch is `build-octofit-app`.
1. Wait for Mona to post the next step.
<details>
<summary>Having trouble? 🤷</summary><br/>
- Make sure the branch name is exactly `build-octofit-app`.
- Make sure the branch is pushed to your repository.
</details>
@@ -0,0 +1,40 @@
## Step 2: Initialize the modern multi-tier application stack
> [!NOTE]
> **Behind the scenes:** This exercise uses custom instruction files to guide Copilot for this multi-tier application setup.
In this step, you will initialize a modern **multi-tier application** foundation:
- Create `octofit-tracker/frontend` and `octofit-tracker/backend`.
- Initialize React 19 (presentation tier) with Vite.
- Initialize a Node.js + Express + TypeScript backend (logic tier).
- Add MongoDB support with Mongoose (data tier).
### :keyboard: Activity: Initialize frontend and backend package manifests
> ![Static Badge](https://img.shields.io/badge/-Prompt-text?style=flat-square&logo=github%20copilot&labelColor=512a97&color=ecd8ff)
>
> ```prompt
> Let's initialize the OctoFit Tracker modern multi-tier application.
>
> Follow the instructions exactly and execute step-by-step:
> - Create octofit-tracker/frontend and octofit-tracker/backend
> - Initialize React 19 in the frontend with Vite
> - Initialize backend package.json for Node.js + Express + TypeScript
> - Add mongoose for MongoDB data access
> - Keep ports at 5173 (frontend), 8000 (backend), and 27017 (MongoDB)
> ```
1. Commit and push to `build-octofit-app`.
1. Wait for Mona to check your work and post the next lesson.
<details>
<summary>Having trouble? 🤷</summary><br/>
Check these files exist and include expected dependencies:
- `octofit-tracker/frontend/package.json` with React 19.
- `octofit-tracker/backend/package.json` with `express` and `mongoose`.
</details>
+44
View File
@@ -0,0 +1,44 @@
## Step 3: Build the logic and data tiers for the multi-tier application
> [!NOTE]
> **Behind the scenes:** Custom instructions and prompt files guide Copilot while building the logic and data tiers.
In this step, you will implement the backend of the **multi-tier application**:
- Configure MongoDB connection for `octofit_db`.
- Create Express routes for users, teams, activities, leaderboard, and workouts.
- Add a seed script to populate test data.
### :keyboard: Activity: Scaffold the logic tier
Use this prompt file:
> ![Static Badge](https://img.shields.io/badge/-Prompt-text?style=flat-square&logo=github%20copilot&labelColor=512a97&color=ecd8ff)
>
> ```prompt
> /create-express-logic-tier
> ```
### :keyboard: Activity: Configure and seed the data tier
Use this prompt file:
> ![Static Badge](https://img.shields.io/badge/-Prompt-text?style=flat-square&logo=github%20copilot&labelColor=512a97&color=ecd8ff)
>
> ```prompt
> /init-populate-octofit_db
> ```
1. Commit and push your backend changes.
1. Wait for Mona to validate and unlock the next step.
<details>
<summary>Having trouble? 🤷</summary><br/>
Confirm these files include expected content:
- `octofit-tracker/backend/src/config/database.ts` includes `octofit_db` and `mongoose`.
- `octofit-tracker/backend/src/scripts/seed.ts` includes a seed command description.
</details>
@@ -0,0 +1,35 @@
## Step 4: Wire API hosting for the multi-tier application
In this step, you will finalize API hosting for your **multi-tier application**:
- Keep backend API on port `8000`.
- Build Codespaces-aware API URL behavior using `$CODESPACE_NAME`.
- Validate endpoints with `curl`.
### :keyboard: Activity: Configure API base URL and host support
> ![Static Badge](https://img.shields.io/badge/-Prompt-text?style=flat-square&logo=github%20copilot&labelColor=512a97&color=ecd8ff)
>
> ```prompt
> Let's configure the Node.js API for Codespaces and localhost.
>
> - Backend runs on port 8000
> - Build API base URL with $CODESPACE_NAME when available:
> https://$CODESPACE_NAME-8000.app.github.dev
> - Keep localhost support when $CODESPACE_NAME is not set
> - Verify /api/users and /api/activities with curl
> ```
1. Commit and push your changes to `build-octofit-app`.
1. Wait for Mona to validate and share the next step.
<details>
<summary>Having trouble? 🤷</summary><br/>
Verify `octofit-tracker/backend/src/server.ts` includes:
- `CODESPACE_NAME`
- `-8000.app.github.dev`
</details>
@@ -0,0 +1,53 @@
## Step 5: Build the React presentation tier of the multi-tier application
> [!NOTE]
> This step implements the **presentation tier** for your modern multi-tier application.
In this step, you will:
- Complete React 19 frontend components.
- Connect each view to the backend API routes.
- Use React Router for navigation.
### :keyboard: Activity: Implement frontend components and routing
> ![Static Badge](https://img.shields.io/badge/-Prompt-text?style=flat-square&logo=github%20copilot&labelColor=512a97&color=ecd8ff)
>
> ```prompt
> Let's update the React 19 presentation tier for this multi-tier application.
>
> - Update src/App.jsx and src/main.jsx
> - Update src/components/Activities.jsx
> - Update src/components/Leaderboard.jsx
> - Update src/components/Teams.jsx
> - Update src/components/Users.jsx
> - Update src/components/Workouts.jsx
> - Use react-router-dom for navigation
> - Use Vite environment variables via `import.meta.env`, for example `import.meta.env.VITE_CODESPACE_NAME`
> - Document that `VITE_CODESPACE_NAME` must be defined (for example in `.env.local`)
> - Use API endpoints under:
> https://${import.meta.env.VITE_CODESPACE_NAME}-8000.app.github.dev/api/[component]/
> - Add a safe fallback if `VITE_CODESPACE_NAME` is unset to avoid `https://undefined-8000...` URLs
> - Keep compatibility with paginated and array responses
> ```
### :keyboard: Activity: Run and verify the presentation tier
Run the React app with the Vite dev server (for example, `npm run dev`) and open port `5173`.
1. Commit and push your changes.
1. Wait for Mona to verify and post the final lesson.
<details>
<summary>Having trouble? 🤷</summary><br/>
Confirm these files include the expected endpoint paths:
- `Activities.jsx` -> `/api/activities/`
- `Leaderboard.jsx` -> `/api/leaderboard/`
- `Teams.jsx` -> `/api/teams/`
- `Users.jsx` -> `/api/users/`
- `Workouts.jsx` -> `/api/workouts/`
</details>
+22
View File
@@ -0,0 +1,22 @@
## Step 6: Use Copilot on your multi-tier application pull request
Great job! You have implemented a modern **multi-tier application** with Copilot agent mode.
Now create and complete your pull request workflow.
### :keyboard: Activity: Open, summarize, and review your PR
1. Open your repository in a browser.
1. Create a pull request with:
- **base:** `main`
- **compare:** `build-octofit-app`
- **title:** `Modernize OctoFit multi-tier application stack`
1. Optionally use **Copilot Summary** for the PR description.
1. Optionally request a **Copilot code review**.
1. Merge the pull request.
1. Wait for Mona to post the final review.
+20
View File
@@ -0,0 +1,20 @@
## Review
_Congratulations, you've completed this exercise!_
You built and modernized a **multi-tier application** using GitHub Copilot agent mode.
### What you accomplished
- Prepared a Codespaces environment for a multi-tier application.
- Implemented a React 19 presentation tier.
- Built a Node.js + Express + TypeScript logic tier.
- Connected a MongoDB data tier with Mongoose.
- Practiced pull request summarization and review with Copilot.
### What's next?
- Add authentication and role-based authorization.
- Add tests for API routes and React components.
- Add CI checks for linting and automated tests.
- Explore other GitHub Skills exercises.