├── .vscode
└── .gitkeep
├── complete
├── java
│ └── socialapp
│ │ ├── settings.gradle
│ │ ├── .gitattributes
│ │ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── src
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── contoso
│ │ │ │ └── socialapp
│ │ │ │ └── SocialAppApplicationTests.java
│ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── contoso
│ │ │ │ └── socialapp
│ │ │ │ ├── entity
│ │ │ │ ├── LikeId.java
│ │ │ │ ├── Like.java
│ │ │ │ ├── Comment.java
│ │ │ │ └── Post.java
│ │ │ │ ├── dto
│ │ │ │ ├── LikeRequest.java
│ │ │ │ ├── LikeResponse.java
│ │ │ │ ├── CommentResponse.java
│ │ │ │ ├── ErrorResponse.java
│ │ │ │ ├── PostResponse.java
│ │ │ │ ├── NewPostRequest.java
│ │ │ │ ├── NewCommentRequest.java
│ │ │ │ ├── UpdatePostRequest.java
│ │ │ │ └── UpdateCommentRequest.java
│ │ │ │ ├── SocialAppApplication.java
│ │ │ │ ├── repository
│ │ │ │ ├── PostRepository.java
│ │ │ │ ├── CommentRepository.java
│ │ │ │ └── LikeRepository.java
│ │ │ │ ├── controller
│ │ │ │ └── HealthController.java
│ │ │ │ ├── config
│ │ │ │ ├── WebConfig.java
│ │ │ │ └── OpenApiConfig.java
│ │ │ │ └── exception
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ └── resources
│ │ │ └── application.properties
│ │ ├── .gitignore
│ │ └── build.gradle
├── javascript
│ ├── postcss.config.js
│ ├── src
│ │ ├── index.css
│ │ ├── main.jsx
│ │ ├── components
│ │ │ ├── common
│ │ │ │ ├── Layout.jsx
│ │ │ │ ├── FloatingActionButton.jsx
│ │ │ │ └── NavBar.jsx
│ │ │ ├── modal
│ │ │ │ ├── Modal.jsx
│ │ │ │ ├── NameInputModal.jsx
│ │ │ │ └── PostingModal.jsx
│ │ │ └── comment
│ │ │ │ └── CommentInput.jsx
│ │ ├── styles
│ │ │ └── theme.js
│ │ ├── api
│ │ │ ├── apiClient.js
│ │ │ └── apiService.js
│ │ ├── App.jsx
│ │ ├── context
│ │ │ └── AuthContext.jsx
│ │ └── pages
│ │ │ └── HomePage.jsx
│ ├── tailwind.config.js
│ ├── Dockerfile
│ ├── vite.config.js
│ ├── index.html
│ ├── nginx.conf
│ ├── .eslintrc.cjs
│ ├── .gitignore
│ ├── package.json
│ ├── README.md
│ ├── playwright.config.js
│ └── tests
│ │ ├── homepage.spec.js
│ │ └── responsive-design.spec.js
├── dotnet
│ ├── Contoso.BlazorApp
│ │ ├── wwwroot
│ │ │ ├── css
│ │ │ │ └── app.css
│ │ │ ├── favicon.png
│ │ │ └── app.css
│ │ ├── Models
│ │ │ ├── ApiSettings.cs
│ │ │ ├── User.cs
│ │ │ ├── Comment.cs
│ │ │ └── Post.cs
│ │ ├── appsettings.Development.json
│ │ ├── Contoso.BlazorApp.csproj
│ │ ├── appsettings.json
│ │ ├── Components
│ │ │ ├── Routes.razor
│ │ │ ├── CommentIcon.razor
│ │ │ ├── Layout
│ │ │ │ ├── MainLayout.razor
│ │ │ │ └── MainLayout.razor.css
│ │ │ ├── Pages
│ │ │ │ ├── Counter.razor
│ │ │ │ ├── Error.razor
│ │ │ │ └── Weather.razor
│ │ │ ├── _Imports.razor
│ │ │ ├── HeartIcon.razor
│ │ │ ├── Modal.razor
│ │ │ ├── FloatingActionButton.razor
│ │ │ ├── App.razor
│ │ │ ├── NameInputModal.razor
│ │ │ └── PostCard.razor
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Program.cs
│ │ └── Services
│ │ │ └── AuthService.cs
│ ├── README.md
│ └── ContosoWebApp.sln
├── compose.yaml
├── Dockerfile.dotnet
├── README.md
└── Dockerfile.java
├── docs
├── .vscode
│ ├── settings.json
│ └── mcp.json
├── images
│ ├── java01.png
│ ├── java02.png
│ ├── setup-01.png
│ ├── setup-02.png
│ ├── setup-03.png
│ ├── javascript-01.png
│ └── javascript-02.png
├── custom-instructions
│ ├── setup
│ │ └── copilot-instructions.md
│ ├── containerization
│ │ └── copilot-instructions.md
│ └── javascript
│ │ └── copilot-instructions.md
└── README.md
├── images
└── banner.png
├── java
└── README.md
├── dotnet
└── README.md
├── python
└── README.md
├── javascript
└── README.md
├── CHANGELOG.md
├── localisation
├── zh-cn
│ ├── java
│ │ └── README.md
│ ├── dotnet
│ │ └── README.md
│ ├── python
│ │ └── README.md
│ ├── javascript
│ │ └── README.md
│ ├── docs
│ │ ├── custom-instructions
│ │ │ ├── setup
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── containerization
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── javascript
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── python
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── dotnet
│ │ │ │ └── copilot-instructions.md
│ │ │ └── java
│ │ │ │ └── copilot-instructions.md
│ │ └── README.md
│ └── complete
│ │ ├── dotnet
│ │ └── README.md
│ │ ├── javascript
│ │ └── README.md
│ │ └── README.md
├── ja-jp
│ ├── java
│ │ └── README.md
│ ├── dotnet
│ │ └── README.md
│ ├── python
│ │ └── README.md
│ ├── javascript
│ │ └── README.md
│ ├── docs
│ │ ├── custom-instructions
│ │ │ ├── setup
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── containerization
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── javascript
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── dotnet
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── python
│ │ │ │ └── copilot-instructions.md
│ │ │ └── java
│ │ │ │ └── copilot-instructions.md
│ │ └── README.md
│ └── complete
│ │ ├── dotnet
│ │ └── README.md
│ │ ├── javascript
│ │ └── README.md
│ │ ├── README.md
│ │ └── python
│ │ └── README.md
├── ko-kr
│ ├── java
│ │ └── README.md
│ ├── dotnet
│ │ └── README.md
│ ├── python
│ │ └── README.md
│ ├── javascript
│ │ └── README.md
│ ├── docs
│ │ ├── custom-instructions
│ │ │ ├── setup
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── dotnet
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── java
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── javascript
│ │ │ │ └── copilot-instructions.md
│ │ │ ├── containerization
│ │ │ │ └── copilot-instructions.md
│ │ │ └── python
│ │ │ │ └── copilot-instructions.md
│ │ └── README.md
│ └── complete
│ │ ├── dotnet
│ │ └── README.md
│ │ ├── javascript
│ │ └── README.md
│ │ └── README.md
├── pt-br
│ ├── java
│ │ └── README.md
│ ├── dotnet
│ │ └── README.md
│ ├── python
│ │ └── README.md
│ ├── javascript
│ │ └── README.md
│ ├── docs
│ │ ├── custom-instructions
│ │ │ ├── setup
│ │ │ │ └── copilot-instructions.md
│ │ │ └── containerization
│ │ │ │ └── copilot-instructions.md
│ │ └── README.md
│ └── complete
│ │ ├── dotnet
│ │ └── README.md
│ │ ├── javascript
│ │ └── README.md
│ │ └── README.md
├── es-es
│ ├── java
│ │ └── README.md
│ ├── dotnet
│ │ └── README.md
│ ├── python
│ │ └── README.md
│ ├── javascript
│ │ └── README.md
│ ├── docs
│ │ ├── custom-instructions
│ │ │ ├── setup
│ │ │ │ └── copilot-instructions.md
│ │ │ └── containerization
│ │ │ │ └── copilot-instructions.md
│ │ └── README.md
│ └── complete
│ │ ├── dotnet
│ │ └── README.md
│ │ ├── javascript
│ │ └── README.md
│ │ └── README.md
└── fr-fr
│ ├── java
│ └── README.md
│ ├── dotnet
│ └── README.md
│ ├── python
│ └── README.md
│ ├── javascript
│ └── README.md
│ ├── docs
│ ├── custom-instructions
│ │ ├── setup
│ │ │ └── copilot-instructions.md
│ │ └── containerization
│ │ │ └── copilot-instructions.md
│ └── README.md
│ └── complete
│ ├── dotnet
│ └── README.md
│ ├── javascript
│ └── README.md
│ └── README.md
├── .github
├── CODE_OF_CONDUCT.md
├── ISSUE_TEMPLATE.md
└── PULL_REQUEST_TEMPLATE.md
├── .devcontainer
├── on-create.sh
└── devcontainer.json
├── LICENSE.md
├── .gitattributes
└── SECURITY.md
/.vscode/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/complete/java/socialapp/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'socialapp'
2 |
--------------------------------------------------------------------------------
/complete/java/socialapp/.gitattributes:
--------------------------------------------------------------------------------
1 | /gradlew text eol=lf
2 | *.bat text eol=crlf
3 | *.jar binary
4 |
--------------------------------------------------------------------------------
/docs/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "chat.tools.autoApprove": true,
3 | "chat.agent.maxRequests": 100
4 | }
--------------------------------------------------------------------------------
/images/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/images/banner.png
--------------------------------------------------------------------------------
/docs/images/java01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/docs/images/java01.png
--------------------------------------------------------------------------------
/docs/images/java02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/docs/images/java02.png
--------------------------------------------------------------------------------
/docs/images/setup-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/docs/images/setup-01.png
--------------------------------------------------------------------------------
/docs/images/setup-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/docs/images/setup-02.png
--------------------------------------------------------------------------------
/docs/images/setup-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/docs/images/setup-03.png
--------------------------------------------------------------------------------
/complete/javascript/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
--------------------------------------------------------------------------------
/docs/images/javascript-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/docs/images/javascript-01.png
--------------------------------------------------------------------------------
/docs/images/javascript-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/docs/images/javascript-02.png
--------------------------------------------------------------------------------
/complete/javascript/src/index.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | /* Custom styles can be added below */
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/wwwroot/css/app.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | /* Custom styles can be added below */
6 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/wwwroot/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/complete/dotnet/Contoso.BlazorApp/wwwroot/favicon.png
--------------------------------------------------------------------------------
/complete/java/socialapp/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/github-copilot-vibe-coding-workshop/HEAD/complete/java/socialapp/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/java/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started with Java
2 |
3 | Here's the starting point for your Java app development.
4 |
5 | If you want to see the complete example, check out this directory, [/complete/java](../complete/java/).
6 |
--------------------------------------------------------------------------------
/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started with .NET
2 |
3 | Here's the starting point for your .NET app development.
4 |
5 | If you want to see the complete example, check out this directory, [/complete/dotnet](../complete/dotnet/).
6 |
--------------------------------------------------------------------------------
/python/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started with Python
2 |
3 | Here's the starting point for your Python app development.
4 |
5 | If you want to see the complete example, check out this directory, [/complete/python](../complete/python/).
6 |
--------------------------------------------------------------------------------
/javascript/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started with JavaScript
2 |
3 | Here's the starting point for your JavaScript app development.
4 |
5 | If you want to see the complete example, check out this directory, [/complete/javascript](../complete/javascript/).
6 |
--------------------------------------------------------------------------------
/complete/javascript/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | export default {
3 | content: [
4 | "./index.html",
5 | "./src/**/*.{js,jsx}"
6 | ],
7 | theme: {
8 | extend: {},
9 | },
10 | plugins: [],
11 | }
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Models/ApiSettings.cs:
--------------------------------------------------------------------------------
1 | namespace Contoso.BlazorApp.Models;
2 |
3 | public class ApiSettings
4 | {
5 | public const string SectionName = "ApiSettings";
6 |
7 | public string BaseUrl { get; set; } = string.Empty;
8 | }
9 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog 👉 GitHub Copilot Vibe Coding Workshop
2 |
3 |
4 | ## 0.1.0 (2025-05-30)
5 |
6 | ### Features
7 |
8 | - Initial code commit
9 |
10 |
18 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft.AspNetCore": "Warning"
6 | }
7 | },
8 | "ApiSettings": {
9 | "BaseUrl": "http://localhost:8080/api/"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/complete/javascript/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App.jsx'
4 | import './index.css'
5 |
6 | ReactDOM.createRoot(document.getElementById('root')).render(
7 |
8 |
9 | ,
10 | )
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Contoso.BlazorApp.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft.AspNetCore": "Warning"
6 | }
7 | },
8 | "AllowedHosts": "*",
9 | "ApiSettings": {
10 | "BaseUrl": "http://localhost:8080/api/"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/Routes.razor:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/complete/java/socialapp/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/CommentIcon.razor:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/test/java/com/contoso/socialapp/SocialAppApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class SocialAppApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/localisation/zh-cn/java/README.md:
--------------------------------------------------------------------------------
1 | # Java 入门
2 |
3 | 这是您 Java 应用开发的起点。
4 |
5 | 如果您想查看完整示例,请查看此目录:[/complete/java](../complete/java/)。
6 |
7 | ---
8 |
9 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
10 |
--------------------------------------------------------------------------------
/localisation/zh-cn/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # .NET 入门
2 |
3 | 这是您 .NET 应用开发的起点。
4 |
5 | 如果您想查看完整示例,请查看此目录:[/complete/dotnet](../complete/dotnet/)。
6 |
7 | ---
8 |
9 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
10 |
--------------------------------------------------------------------------------
/localisation/zh-cn/python/README.md:
--------------------------------------------------------------------------------
1 | # Python 入门
2 |
3 | 这是您 Python 应用开发的起点。
4 |
5 | 如果您想查看完整示例,请查看此目录:[/complete/python](../complete/python/)。
6 |
7 | ---
8 |
9 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
10 |
--------------------------------------------------------------------------------
/docs/custom-instructions/setup/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | You are an expert as a Business Analyst. You're very capable of interpreting the business requirements to technical details.
2 |
3 | When you're dealing with OpenAPI, it's always referring to the spec version of 3.0.1.
4 |
5 | When you create an OpenAPI doc, you should always consider the reusability of data schema. DO NOT duplicate similar data structure.
6 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Models/User.cs:
--------------------------------------------------------------------------------
1 | namespace Contoso.BlazorApp.Models;
2 |
3 | public class User
4 | {
5 | public string Username { get; set; } = string.Empty;
6 | public int? UserId { get; set; }
7 | }
8 |
9 | public class AuthState
10 | {
11 | public User? User { get; set; }
12 | public bool IsAuthenticated => User != null;
13 | public bool IsLoading { get; set; } = true;
14 | }
15 |
--------------------------------------------------------------------------------
/localisation/zh-cn/javascript/README.md:
--------------------------------------------------------------------------------
1 | # JavaScript 入门
2 |
3 | 这是您 JavaScript 应用开发的起点。
4 |
5 | 如果您想查看完整示例,请查看此目录:[/complete/javascript](../complete/javascript/)。
6 |
7 | ---
8 |
9 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
10 |
--------------------------------------------------------------------------------
/localisation/ja-jp/java/README.md:
--------------------------------------------------------------------------------
1 | # Java を始める
2 |
3 | こちらはJavaアプリ開発の出発点です。
4 |
5 | 完全な例を見たい場合は、このディレクトリを確認してください。[/complete/java](../complete/java/)
6 |
7 | ---
8 |
9 | **免責事項**: この文書は[GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)によってローカライズされています。そのため、間違いを含む可能性があります。不適切または間違った翻訳を見つけた場合は、[issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)を作成してください。
10 |
--------------------------------------------------------------------------------
/localisation/ko-kr/java/README.md:
--------------------------------------------------------------------------------
1 | # Java 시작하기
2 |
3 | Java 앱 개발을 위한 시작점입니다.
4 |
5 | 완성된 예제를 보고 싶다면, 이 디렉터리를 확인하세요: [/complete/java](../complete/java/).
6 |
7 | ---
8 |
9 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
10 |
--------------------------------------------------------------------------------
/complete/javascript/src/components/common/Layout.jsx:
--------------------------------------------------------------------------------
1 | import NavBar from "./NavBar";
2 |
3 | const Layout = ({ children }) => {
4 | return (
5 |
6 |
7 |
8 | {children}
9 |
10 |
11 | );
12 | };
13 |
14 | export default Layout;
15 |
--------------------------------------------------------------------------------
/localisation/ja-jp/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # .NET を始める
2 |
3 | こちらは.NETアプリ開発の出発点です。
4 |
5 | 完全な例を見たい場合は、このディレクトリを確認してください。[/complete/dotnet](../complete/dotnet/)
6 |
7 | ---
8 |
9 | **免責事項**: この文書は[GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)によってローカライズされています。そのため、間違いを含む可能性があります。不適切または間違った翻訳を見つけた場合は、[issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)を作成してください。
10 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/entity/LikeId.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.io.Serializable;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class LikeId implements Serializable {
13 | private Post post;
14 | private String username;
15 | }
16 |
--------------------------------------------------------------------------------
/localisation/ja-jp/python/README.md:
--------------------------------------------------------------------------------
1 | # Python を始める
2 |
3 | こちらはPythonアプリ開発の出発点です。
4 |
5 | 完全な例を見たい場合は、このディレクトリを確認してください。[/complete/python](../complete/python/)
6 |
7 | ---
8 |
9 | **免責事項**: この文書は[GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)によってローカライズされています。そのため、間違いを含む可能性があります。不適切または間違った翻訳を見つけた場合は、[issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)を作成してください。
10 |
--------------------------------------------------------------------------------
/localisation/ko-kr/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # .NET 시작하기
2 |
3 | .NET 앱 개발을 위한 시작점입니다.
4 |
5 | 완성된 예제를 보고 싶다면, 이 디렉터리를 확인하세요: [/complete/dotnet](../complete/dotnet/).
6 |
7 | ---
8 |
9 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
10 |
--------------------------------------------------------------------------------
/localisation/ko-kr/python/README.md:
--------------------------------------------------------------------------------
1 | # Python 시작하기
2 |
3 | Python 앱 개발을 위한 시작점입니다.
4 |
5 | 완성된 예제를 보고 싶다면, 이 디렉터리를 확인하세요: [/complete/python](../complete/python/).
6 |
7 | ---
8 |
9 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
10 |
--------------------------------------------------------------------------------
/localisation/zh-cn/docs/custom-instructions/setup/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | 您是一位专家业务分析师。您非常擅长将业务需求解释为技术细节。
2 |
3 | 当您处理 OpenAPI 时,始终指的是 3.0.1 版本的规范。
4 |
5 | 当您创建 OpenAPI 文档时,您应该始终考虑数据架构的可重用性。不要重复类似的数据结构。
6 |
7 | ---
8 |
9 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
10 |
--------------------------------------------------------------------------------
/localisation/ja-jp/javascript/README.md:
--------------------------------------------------------------------------------
1 | # JavaScript を始める
2 |
3 | こちらはJavaScriptアプリ開発の出発点です。
4 |
5 | 完全な例を見たい場合は、このディレクトリを確認してください。[/complete/javascript](../complete/javascript/)
6 |
7 | ---
8 |
9 | **免責事項**: この文書は[GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)によってローカライズされています。そのため、間違いを含む可能性があります。不適切または間違った翻訳を見つけた場合は、[issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)を作成してください。
10 |
--------------------------------------------------------------------------------
/localisation/ko-kr/javascript/README.md:
--------------------------------------------------------------------------------
1 | # JavaScript 시작하기
2 |
3 | JavaScript 앱 개발을 위한 시작점입니다.
4 |
5 | 완성된 예제를 보고 싶다면, 이 디렉터리를 확인하세요: [/complete/javascript](../complete/javascript/).
6 |
7 | ---
8 |
9 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
10 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/LikeRequest.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import jakarta.validation.constraints.NotBlank;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 | import lombok.AllArgsConstructor;
7 |
8 | @Data
9 | @NoArgsConstructor
10 | @AllArgsConstructor
11 | public class LikeRequest {
12 |
13 | @NotBlank(message = "Username is required")
14 | private String username;
15 | }
16 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/LikeResponse.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import lombok.Data;
4 | import lombok.NoArgsConstructor;
5 | import lombok.AllArgsConstructor;
6 |
7 | import java.time.LocalDateTime;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class LikeResponse {
13 |
14 | private String postId;
15 | private String username;
16 | private LocalDateTime likedAt;
17 | }
18 |
--------------------------------------------------------------------------------
/complete/javascript/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:16-alpine as build
2 |
3 | WORKDIR /app
4 |
5 | COPY package.json package-lock.json* ./
6 | RUN npm ci --no-cache
7 |
8 | COPY public/ public/
9 | COPY src/ src/
10 |
11 | RUN npm run build
12 |
13 | FROM nginx:stable-alpine
14 |
15 | COPY --from=build /app/build /usr/share/nginx/html
16 |
17 | RUN rm /etc/nginx/conf.d/default.conf
18 | COPY nginx.conf /etc/nginx/conf.d/
19 |
20 | EXPOSE 80
21 |
22 | CMD ["nginx", "-g", "daemon off;"]
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/Layout/MainLayout.razor:
--------------------------------------------------------------------------------
1 | @inherits LayoutComponentBase
2 |
3 |
4 |
5 |
6 | @Body
7 |
8 |
9 |
10 |
11 | An unhandled error has occurred.
12 |
Reload
13 |
🗙
14 |
15 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/Pages/Counter.razor:
--------------------------------------------------------------------------------
1 | @page "/counter"
2 | @rendermode InteractiveServer
3 |
4 | Counter
5 |
6 | Counter
7 |
8 | Current count: @currentCount
9 |
10 |
11 |
12 | @code {
13 | private int currentCount = 0;
14 |
15 | private void IncrementCount()
16 | {
17 | currentCount++;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.github/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Microsoft Open Source Code of Conduct
2 |
3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
4 |
5 | Resources:
6 |
7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
10 |
--------------------------------------------------------------------------------
/complete/javascript/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | server: {
8 | port: 3000,
9 | open: true,
10 | proxy: {
11 | '/api': {
12 | target: 'http://0.0.0.0:8000',
13 | changeOrigin: true,
14 | },
15 | },
16 | },
17 | build: {
18 | outDir: 'dist',
19 | minify: 'terser',
20 | sourcemap: false
21 | }
22 | })
--------------------------------------------------------------------------------
/.devcontainer/on-create.sh:
--------------------------------------------------------------------------------
1 | sudo apt-get update && \
2 | sudo apt upgrade -y && \
3 | sudo apt-get install -y dos2unix libsecret-1-0 xdg-utils && \
4 | sudo apt clean -y && \
5 | sudo rm -rf /var/lib/apt/lists/*
6 |
7 | echo Configure git
8 | git config --global pull.rebase false
9 | git config --global core.autocrlf input
10 |
11 | echo Install .NET dev certs
12 | dotnet dev-certs https --trust
13 |
14 | echo Install uv for Python
15 | sudo curl -LsSf https://astral.sh/uv/install.sh | sh
16 |
17 | echo Done!
18 |
--------------------------------------------------------------------------------
/localisation/ja-jp/docs/custom-instructions/setup/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | あなたはビジネスアナリストのエキスパートです。ビジネス要件を技術的な詳細に解釈することに非常に長けています。
2 |
3 | OpenAPIを扱う際は、常にバージョン3.0.1の仕様を参照してください。
4 |
5 | OpenAPI文書を作成する際は、常にデータスキーマの再利用性を考慮する必要があります。類似のデータ構造を重複させないでください。
6 |
7 | ---
8 |
9 | **免責事項**: この文書は[GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)によってローカライズされています。そのため、間違いを含む可能性があります。不適切または間違った翻訳を見つけた場合は、[issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)を作成してください。
10 |
--------------------------------------------------------------------------------
/complete/javascript/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | GitHub Copilot Bootcamp 2025
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/localisation/ko-kr/docs/custom-instructions/setup/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | 당신은 비즈니스 분석가 전문가입니다. 비즈니스 요구사항을 기술적 세부사항으로 해석하는 데 매우 능숙합니다.
2 |
3 | OpenAPI를 다룰 때는 항상 3.0.1 사양 버전을 참조하고 있습니다.
4 |
5 | OpenAPI 문서를 생성할 때는 항상 데이터 스키마의 재사용성을 고려해야 합니다. 유사한 데이터 구조를 중복하지 마세요.
6 |
7 | ---
8 |
9 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
10 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/_Imports.razor:
--------------------------------------------------------------------------------
1 | @using System.Net.Http
2 | @using System.Net.Http.Json
3 | @using Microsoft.AspNetCore.Components.Forms
4 | @using Microsoft.AspNetCore.Components.Routing
5 | @using Microsoft.AspNetCore.Components.Web
6 | @using static Microsoft.AspNetCore.Components.Web.RenderMode
7 | @using Microsoft.AspNetCore.Components.Web.Virtualization
8 | @using Microsoft.JSInterop
9 | @using Contoso.BlazorApp
10 | @using Contoso.BlazorApp.Components
11 | @using Contoso.BlazorApp.Models
12 | @using Contoso.BlazorApp.Services
13 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/HeartIcon.razor:
--------------------------------------------------------------------------------
1 |
7 |
8 | @code {
9 | [Parameter] public bool Filled { get; set; }
10 | }
11 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/CommentResponse.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import lombok.Data;
4 | import lombok.NoArgsConstructor;
5 | import lombok.AllArgsConstructor;
6 |
7 | import java.time.LocalDateTime;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class CommentResponse {
13 |
14 | private String id;
15 | private String postId;
16 | private String username;
17 | private String content;
18 | private LocalDateTime createdAt;
19 | private LocalDateTime updatedAt;
20 | }
21 |
--------------------------------------------------------------------------------
/localisation/pt-br/java/README.md:
--------------------------------------------------------------------------------
1 | # Começando com Java
2 |
3 | Aqui está o ponto de partida para o desenvolvimento da sua aplicação Java.
4 |
5 | Se você quiser ver o exemplo completo, confira este diretório, [/complete/java](../complete/java/).
6 |
7 | ---
8 |
9 | **Aviso**: Este documento foi localizado pelo [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Portanto, pode conter erros. Se você encontrar alguma tradução inadequada ou incorreta, por favor crie um [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/SocialAppApplication.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | /**
7 | * Main application class for Contoso Social App.
8 | * This Spring Boot application provides a social media platform backend.
9 | */
10 | @SpringBootApplication
11 | public class SocialAppApplication {
12 |
13 | public static void main(String[] args) {
14 | SpringApplication.run(SocialAppApplication.class, args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/localisation/pt-br/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # Começando com .NET
2 |
3 | Aqui está o ponto de partida para o desenvolvimento da sua aplicação .NET.
4 |
5 | Se você quiser ver o exemplo completo, confira este diretório, [/complete/dotnet](../complete/dotnet/).
6 |
7 | ---
8 |
9 | **Aviso**: Este documento foi localizado pelo [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Portanto, pode conter erros. Se você encontrar alguma tradução inadequada ou incorreta, por favor crie um [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/complete/javascript/nginx.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name localhost;
4 |
5 | location / {
6 | root /usr/share/nginx/html;
7 | index index.html index.htm;
8 | try_files $uri $uri/ /index.html;
9 | }
10 |
11 | location /api/ {
12 | rewrite ^/api(/.*)$ $1 break;
13 | proxy_pass http://backend:8000;
14 | proxy_set_header Host $host;
15 | proxy_set_header X-Real-IP $remote_addr;
16 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
17 | proxy_set_header X-Forwarded-Proto $scheme;
18 | }
19 | }
--------------------------------------------------------------------------------
/localisation/pt-br/python/README.md:
--------------------------------------------------------------------------------
1 | # Começando com Python
2 |
3 | Aqui está o ponto de partida para o desenvolvimento da sua aplicação Python.
4 |
5 | Se você quiser ver o exemplo completo, confira este diretório, [/complete/python](../complete/python/).
6 |
7 | ---
8 |
9 | **Aviso**: Este documento foi localizado pelo [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Portanto, pode conter erros. Se você encontrar alguma tradução inadequada ou incorreta, por favor crie um [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/Modal.razor:
--------------------------------------------------------------------------------
1 | @if (IsOpen)
2 | {
3 |
4 |
5 | @ChildContent
6 |
7 |
8 | }
9 |
10 | @code {
11 | [Parameter] public bool IsOpen { get; set; }
12 | [Parameter] public EventCallback OnClose { get; set; }
13 | [Parameter] public RenderFragment? ChildContent { get; set; }
14 |
15 | private async Task HandleBackdropClick()
16 | {
17 | await OnClose.InvokeAsync();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/ErrorResponse.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import lombok.Data;
4 | import lombok.NoArgsConstructor;
5 | import lombok.AllArgsConstructor;
6 |
7 | import java.util.List;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class ErrorResponse {
13 |
14 | private String error;
15 | private String message;
16 | private List details;
17 |
18 | public ErrorResponse(String error, String message) {
19 | this.error = error;
20 | this.message = message;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/PostResponse.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import lombok.Data;
4 | import lombok.NoArgsConstructor;
5 | import lombok.AllArgsConstructor;
6 |
7 | import java.time.LocalDateTime;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class PostResponse {
13 |
14 | private String id;
15 | private String username;
16 | private String content;
17 | private LocalDateTime createdAt;
18 | private LocalDateTime updatedAt;
19 | private int likesCount;
20 | private int commentsCount;
21 | }
22 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/repository/PostRepository.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.repository;
2 |
3 | import com.contoso.socialapp.entity.Post;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.data.jpa.repository.Query;
6 | import org.springframework.stereotype.Repository;
7 |
8 | import java.util.List;
9 |
10 | @Repository
11 | public interface PostRepository extends JpaRepository {
12 |
13 | @Query("SELECT p FROM Post p ORDER BY p.createdAt DESC")
14 | List findAllOrderByCreatedAtDesc();
15 | }
16 |
--------------------------------------------------------------------------------
/localisation/es-es/java/README.md:
--------------------------------------------------------------------------------
1 | # Comenzando con Java
2 |
3 | Aquí está el punto de partida para el desarrollo de tu aplicación Java.
4 |
5 | Si quieres ver el ejemplo completo, consulta este directorio, [/complete/java](../complete/java/).
6 |
7 | ---
8 |
9 | **Disclaimer**: Este documento ha sido localizado por [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Por lo tanto, puede contener errores. Si encuentras alguna traducción que sea inapropiada o errónea, por favor crea un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/localisation/fr-fr/java/README.md:
--------------------------------------------------------------------------------
1 | # Démarrer avec Java
2 |
3 | Voici le point de départ pour le développement de votre application Java.
4 |
5 | Si vous voulez voir l'exemple complet, consultez ce répertoire, [/complete/java](../complete/java/).
6 |
7 | ---
8 |
9 | **Avertissement**: Ce document a été localisé par [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Par conséquent, il peut contenir des erreurs. Si vous trouvez une traduction inappropriée ou erronée, veuillez créer un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/localisation/es-es/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # Comenzando con .NET
2 |
3 | Aquí está el punto de partida para el desarrollo de tu aplicación .NET.
4 |
5 | Si quieres ver el ejemplo completo, consulta este directorio, [/complete/dotnet](../complete/dotnet/).
6 |
7 | ---
8 |
9 | **Disclaimer**: Este documento ha sido localizado por [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Por lo tanto, puede contener errores. Si encuentras alguna traducción que sea inapropiada o errónea, por favor crea un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/localisation/fr-fr/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # Démarrer avec .NET
2 |
3 | Voici le point de départ pour le développement de votre application .NET.
4 |
5 | Si vous voulez voir l'exemple complet, consultez ce répertoire, [/complete/dotnet](../complete/dotnet/).
6 |
7 | ---
8 |
9 | **Avertissement**: Ce document a été localisé par [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Par conséquent, il peut contenir des erreurs. Si vous trouvez une traduction inappropriée ou erronée, veuillez créer un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/localisation/es-es/python/README.md:
--------------------------------------------------------------------------------
1 | # Comenzando con Python
2 |
3 | Aquí está el punto de partida para el desarrollo de tu aplicación Python.
4 |
5 | Si quieres ver el ejemplo completo, consulta este directorio, [/complete/python](../complete/python/).
6 |
7 | ---
8 |
9 | **Disclaimer**: Este documento ha sido localizado por [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Por lo tanto, puede contener errores. Si encuentras alguna traducción que sea inapropiada o errónea, por favor crea un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/localisation/fr-fr/python/README.md:
--------------------------------------------------------------------------------
1 | # Démarrer avec Python
2 |
3 | Voici le point de départ pour le développement de votre application Python.
4 |
5 | Si vous voulez voir l'exemple complet, consultez ce répertoire, [/complete/python](../complete/python/).
6 |
7 | ---
8 |
9 | **Avertissement**: Ce document a été localisé par [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Par conséquent, il peut contenir des erreurs. Si vous trouvez une traduction inappropriée ou erronée, veuillez créer un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/localisation/pt-br/javascript/README.md:
--------------------------------------------------------------------------------
1 | # Começando com JavaScript
2 |
3 | Aqui está o ponto de partida para o desenvolvimento da sua aplicação JavaScript.
4 |
5 | Se você quiser ver o exemplo completo, confira este diretório, [/complete/javascript](../complete/javascript/).
6 |
7 | ---
8 |
9 | **Aviso**: Este documento foi localizado pelo [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Portanto, pode conter erros. Se você encontrar alguma tradução inadequada ou incorreta, por favor crie um [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/FloatingActionButton.razor:
--------------------------------------------------------------------------------
1 |
7 |
8 | @code {
9 | [Parameter] public EventCallback OnClick { get; set; }
10 | }
11 |
--------------------------------------------------------------------------------
/complete/java/socialapp/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | .gradle
3 | build/
4 | !gradle/wrapper/gradle-wrapper.jar
5 | !**/src/main/**/build/
6 | !**/src/test/**/build/
7 |
8 | ### STS ###
9 | .apt_generated
10 | .classpath
11 | .factorypath
12 | .project
13 | .settings
14 | .springBeans
15 | .sts4-cache
16 | bin/
17 | !**/src/main/**/bin/
18 | !**/src/test/**/bin/
19 |
20 | ### IntelliJ IDEA ###
21 | .idea
22 | *.iws
23 | *.iml
24 | *.ipr
25 | out/
26 | !**/src/main/**/out/
27 | !**/src/test/**/out/
28 |
29 | ### NetBeans ###
30 | /nbproject/private/
31 | /nbbuild/
32 | /dist/
33 | /nbdist/
34 | /.nb-gradle/
35 |
36 | ### VS Code ###
37 | .vscode/
38 |
--------------------------------------------------------------------------------
/localisation/es-es/javascript/README.md:
--------------------------------------------------------------------------------
1 | # Comenzando con JavaScript
2 |
3 | Aquí está el punto de partida para el desarrollo de tu aplicación JavaScript.
4 |
5 | Si quieres ver el ejemplo completo, consulta este directorio, [/complete/javascript](../complete/javascript/).
6 |
7 | ---
8 |
9 | **Disclaimer**: Este documento ha sido localizado por [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Por lo tanto, puede contener errores. Si encuentras alguna traducción que sea inapropiada o errónea, por favor crea un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/localisation/fr-fr/javascript/README.md:
--------------------------------------------------------------------------------
1 | # Démarrer avec JavaScript
2 |
3 | Voici le point de départ pour le développement de votre application JavaScript.
4 |
5 | Si vous voulez voir l'exemple complet, consultez ce répertoire, [/complete/javascript](../complete/javascript/).
6 |
7 | ---
8 |
9 | **Avertissement**: Ce document a été localisé par [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Par conséquent, il peut contenir des erreurs. Si vous trouvez une traduction inappropriée ou erronée, veuillez créer un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/complete/javascript/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: { browser: true, es2020: true },
4 | extends: [
5 | 'eslint:recommended',
6 | 'plugin:react/recommended',
7 | 'plugin:react/jsx-runtime',
8 | 'plugin:react-hooks/recommended',
9 | ],
10 | ignorePatterns: ['dist', '.eslintrc.cjs'],
11 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
12 | settings: { react: { version: '18.2' } },
13 | plugins: ['react-refresh'],
14 | rules: {
15 | 'react-refresh/only-export-components': [
16 | 'warn',
17 | { allowConstantExport: true },
18 | ],
19 | 'react/react-in-jsx-scope': 'off',
20 | 'react/prop-types': 'off',
21 | },
22 | }
--------------------------------------------------------------------------------
/complete/javascript/src/styles/theme.js:
--------------------------------------------------------------------------------
1 | const theme = {
2 | colors: {
3 | primary: "#00B7FF",
4 | secondary: "#CCF1FF",
5 | background: "#000000",
6 | text: "#FFFFFF",
7 | gray: "#D9D9D9",
8 | darkGray: "#878787",
9 | inputText: "#606060",
10 | heart: "#FF0000",
11 | },
12 | sizes: {
13 | navWidth: "110px",
14 | maxContentWidth: "700px",
15 | borderRadius: {
16 | sm: "10px",
17 | md: "20px",
18 | },
19 | },
20 | fontSizes: {
21 | xs: "16px",
22 | sm: "20px",
23 | md: "24px",
24 | lg: "32px",
25 | xl: "36px",
26 | },
27 | fontWeights: {
28 | normal: 400,
29 | bold: 700,
30 | },
31 | };
32 |
33 | export default theme;
34 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Components/App.razor:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Contoso Outdoor Social
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/complete/javascript/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | # Dependencies
11 | node_modules
12 | .yarn/*
13 | !.yarn/cache
14 | !.yarn/patches
15 | !.yarn/plugins
16 | !.yarn/releases
17 | !.yarn/sdks
18 | !.yarn/versions
19 |
20 | # Build output
21 | dist
22 | dist-ssr
23 | *.local
24 |
25 | # Editor directories and files
26 | .vscode/*
27 | !.vscode/extensions.json
28 | .idea
29 | .DS_Store
30 | *.suo
31 | *.ntvs*
32 | *.njsproj
33 | *.sln
34 | *.sw?
35 |
36 | # Environment variables
37 | .env
38 | .env.*
39 | !.env.example
40 |
41 | # Playwright artifacts
42 | playwright-report/
43 | .playwright/
44 |
45 | # Playwright test results
46 | test-results/
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=socialapp
2 | server.port=8080
3 |
4 | # CORS Configuration
5 | management.endpoints.web.cors.allowed-origins=*
6 | management.endpoints.web.cors.allowed-methods=GET,POST,PUT,DELETE,OPTIONS
7 | management.endpoints.web.cors.allowed-headers=*
8 |
9 | # Database Configuration
10 | spring.datasource.url=jdbc:sqlite:sns_api.db
11 | spring.datasource.driver-class-name=org.sqlite.JDBC
12 | spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect
13 | spring.jpa.hibernate.ddl-auto=update
14 | spring.jpa.show-sql=false
15 | spring.sql.init.mode=always
16 |
17 | # OpenAPI/Swagger Configuration
18 | springdoc.swagger-ui.path=/swagger-ui.html
19 | springdoc.swagger-ui.operationsSorter=method
20 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/NewPostRequest.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import jakarta.validation.constraints.NotBlank;
4 | import jakarta.validation.constraints.Size;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 | import lombok.AllArgsConstructor;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class NewPostRequest {
13 |
14 | @NotBlank(message = "Username is required")
15 | @Size(min = 1, max = 50, message = "Username must be between 1 and 50 characters")
16 | private String username;
17 |
18 | @NotBlank(message = "Content is required")
19 | @Size(min = 1, max = 2000, message = "Content must be between 1 and 2000 characters")
20 | private String content;
21 | }
22 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/NewCommentRequest.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import jakarta.validation.constraints.NotBlank;
4 | import jakarta.validation.constraints.Size;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 | import lombok.AllArgsConstructor;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class NewCommentRequest {
13 |
14 | @NotBlank(message = "Username is required")
15 | @Size(min = 1, max = 50, message = "Username must be between 1 and 50 characters")
16 | private String username;
17 |
18 | @NotBlank(message = "Content is required")
19 | @Size(min = 1, max = 1000, message = "Content must be between 1 and 1000 characters")
20 | private String content;
21 | }
22 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/UpdatePostRequest.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import jakarta.validation.constraints.NotBlank;
4 | import jakarta.validation.constraints.Size;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 | import lombok.AllArgsConstructor;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class UpdatePostRequest {
13 |
14 | @NotBlank(message = "Username is required")
15 | @Size(min = 1, max = 50, message = "Username must be between 1 and 50 characters")
16 | private String username;
17 |
18 | @NotBlank(message = "Content is required")
19 | @Size(min = 1, max = 2000, message = "Content must be between 1 and 2000 characters")
20 | private String content;
21 | }
22 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/launchsettings.json",
3 | "profiles": { "http": {
4 | "commandName": "Project",
5 | "dotnetRunMessages": true,
6 | "launchBrowser": true,
7 | "applicationUrl": "http://localhost:3031",
8 | "environmentVariables": {
9 | "ASPNETCORE_ENVIRONMENT": "Development"
10 | }
11 | },
12 | "https": {
13 | "commandName": "Project",
14 | "dotnetRunMessages": true,
15 | "launchBrowser": true,
16 | "applicationUrl": "https://localhost:43031;http://localhost:3031",
17 | "environmentVariables": {
18 | "ASPNETCORE_ENVIRONMENT": "Development"
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/dto/UpdateCommentRequest.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.dto;
2 |
3 | import jakarta.validation.constraints.NotBlank;
4 | import jakarta.validation.constraints.Size;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 | import lombok.AllArgsConstructor;
8 |
9 | @Data
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class UpdateCommentRequest {
13 |
14 | @NotBlank(message = "Username is required")
15 | @Size(min = 1, max = 50, message = "Username must be between 1 and 50 characters")
16 | private String username;
17 |
18 | @NotBlank(message = "Content is required")
19 | @Size(min = 1, max = 1000, message = "Content must be between 1 and 1000 characters")
20 | private String content;
21 | }
22 |
--------------------------------------------------------------------------------
/localisation/es-es/docs/custom-instructions/setup/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | Eres un experto como Analista de Negocios. Eres muy capaz de interpretar los requisitos comerciales a detalles técnicos.
2 |
3 | Cuando trabajas con OpenAPI, siempre se refiere a la versión de especificación 3.0.1.
4 |
5 | Cuando creas un documento OpenAPI, siempre debes considerar la reutilización del esquema de datos. NO dupliques estructuras de datos similares.
6 |
7 | ---
8 |
9 | **Disclaimer**: Este documento ha sido localizado por [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Por lo tanto, puede contener errores. Si encuentras alguna traducción que sea inapropiada o errónea, por favor crea un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/localisation/pt-br/docs/custom-instructions/setup/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | Você é um especialista como Analista de Negócios. Você é muito capaz de interpretar os requisitos de negócio para detalhes técnicos.
2 |
3 | Quando você está lidando com OpenAPI, sempre está se referindo à versão de especificação 3.0.1.
4 |
5 | Quando você cria um documento OpenAPI, você deve sempre considerar a reutilização do esquema de dados. NÃO duplique estrutura de dados similar.
6 |
7 | ---
8 |
9 | **Aviso**: Este documento foi localizado pelo [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Portanto, pode conter erros. Se você encontrar alguma tradução inadequada ou incorreta, por favor crie um [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/complete/javascript/src/components/common/FloatingActionButton.jsx:
--------------------------------------------------------------------------------
1 | const PlusIcon = () => (
2 |
11 | );
12 |
13 | const FloatingActionButton = ({ onClick }) => {
14 | return (
15 |
23 | );
24 | };
25 |
26 | export default FloatingActionButton;
27 |
--------------------------------------------------------------------------------
/localisation/fr-fr/docs/custom-instructions/setup/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | Vous êtes un expert en tant qu'Analyste Métier. Vous êtes très capable d'interpréter les exigences métier en détails techniques.
2 |
3 | Lorsque vous traitez avec OpenAPI, cela fait toujours référence à la version spec 3.0.1.
4 |
5 | Lorsque vous créez un document OpenAPI, vous devez toujours considérer la réutilisabilité du schéma de données. NE dupliquez PAS une structure de données similaire.
6 |
7 | ---
8 |
9 | **Avertissement**: Ce document a été localisé par [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot). Par conséquent, il peut contenir des erreurs. Si vous trouvez une traduction inappropriée ou erronée, veuillez créer un [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new).
10 |
--------------------------------------------------------------------------------
/complete/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # .NET App Sample
2 |
3 | ## Prerequisites
4 |
5 | Refer to the [README](../../README.md) doc for preparation.
6 |
7 | ## Getting Started
8 |
9 | ### Run Spring Boot Backend
10 |
11 | Use [Java App Sample](../java/).
12 |
13 | > **NOTE**: If you use GitHub Codespaces, make sure that the Java app port, `8080`, is set to **public**.
14 |
15 | ### Run Blazor Frontend
16 |
17 | 1. Get the repository root.
18 |
19 | ```bash
20 | # bash/zsh
21 | REPOSITORY_ROOT=$(git rev-parse --show-toplevel)
22 | ```
23 |
24 | ```powershell
25 | # PowerShell
26 | $REPOSITORY_ROOT = git rev-parse --show-toplevel
27 | ```
28 |
29 | 1. Run the app.
30 |
31 | ```bash
32 | dotnet watch run --project $REPOSITORY_ROOT/complete/dotnet/Contoso.BlazorApp
33 | ```
34 |
35 | 1. Verify if the web application is running properly.
36 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Self-Paced Learning Instruction
2 |
3 | Here are the self-paced learning instruction materials. Use them and build apps!
4 |
5 | | Step | Link |
6 | |-------------------------------------|----------------------------------------------------|
7 | | 00: Development Environment | [00-setup.md](./00-setup.md) |
8 | | 01: Python Backend Development | [01-python.md](./01-python.md) |
9 | | 02: JavaScript Frontend Development | [02-javascript.md](./02-javascript.md) |
10 | | 03: Java Migration from Python | [03-java.md](./03-java.md) |
11 | | 04: .NET Migration from JavaScript | [04-dotnet.md](./04-dotnet.md) |
12 | | 05: Containerization | [05-containerization.md](./05-containerization.md) |
13 |
--------------------------------------------------------------------------------
/complete/javascript/src/api/apiClient.js:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 |
3 | const apiClient = axios.create({
4 | baseURL: "/api",
5 | headers: {
6 | "Content-Type": "application/json",
7 | },
8 | });
9 |
10 | apiClient.interceptors.request.use(
11 | (config) => {
12 | const userStr = localStorage.getItem("user");
13 | if (userStr) {
14 | try {
15 | const user = JSON.parse(userStr);
16 | if (user.userId) {
17 | config.headers["X-User-ID"] = user.userId;
18 | }
19 | if (user.username) {
20 | config.headers["x-username"] = encodeURIComponent(user.username);
21 | }
22 | } catch (error) {
23 | console.error("Error parsing user information:", error);
24 | }
25 | }
26 | return config;
27 | },
28 | (error) => {
29 | return Promise.reject(error);
30 | }
31 | );
32 |
33 | export default apiClient;
34 |
--------------------------------------------------------------------------------
/docs/.vscode/mcp.json:
--------------------------------------------------------------------------------
1 | {
2 | "inputs": [
3 | {
4 | "type": "promptString",
5 | "id": "figma-api-key",
6 | "description": "MCP server access key for Figma",
7 | "password": true
8 | }
9 | ],
10 | "servers": {
11 | "awesome-copilot": {
12 | "command": "docker",
13 | "args": [
14 | "run",
15 | "-i",
16 | "--rm",
17 | "ghcr.io/microsoft/mcp-dotnet-samples/awesome-copilot:latest"
18 | ]
19 | },
20 | "context7": {
21 | "command": "npx",
22 | "args": [
23 | "-y",
24 | "@upstash/context7-mcp"
25 | ]
26 | },
27 | "Framelink Figma MCP": {
28 | "command": "npx",
29 | "args": [
30 | "-y",
31 | "figma-developer-mcp",
32 | "--figma-api-key=${input:figma-api-key}",
33 | "--stdio"
34 | ],
35 | "type": "stdio",
36 | "env": {}
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/localisation/zh-cn/complete/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # .NET 应用示例
2 |
3 | ## 先决条件
4 |
5 | 请参考 [README](../../README.md) 文档进行准备。
6 |
7 | ## 入门指南
8 |
9 | ### 运行 Spring Boot 后端
10 |
11 | 使用 [Java 应用示例](../java/)。
12 |
13 | > **注意**:如果您使用 GitHub Codespaces,请确保 Java 应用端口 `8080` 设置为**公共**。
14 |
15 | ### 运行 Blazor 前端
16 |
17 | 1. 获取存储库根目录。
18 |
19 | ```bash
20 | # bash/zsh
21 | REPOSITORY_ROOT=$(git rev-parse --show-toplevel)
22 | ```
23 |
24 | ```powershell
25 | # PowerShell
26 | $REPOSITORY_ROOT = git rev-parse --show-toplevel
27 | ```
28 |
29 | 1. 运行应用。
30 |
31 | ```bash
32 | dotnet watch run --project $REPOSITORY_ROOT/complete/dotnet/Contoso.BlazorApp
33 | ```
34 |
35 | 1. 验证 Web 应用程序是否正常运行。
36 |
37 | ---
38 |
39 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
40 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/repository/CommentRepository.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.repository;
2 |
3 | import com.contoso.socialapp.entity.Comment;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.data.jpa.repository.Query;
6 | import org.springframework.data.repository.query.Param;
7 | import org.springframework.stereotype.Repository;
8 |
9 | import java.util.List;
10 | import java.util.Optional;
11 |
12 | @Repository
13 | public interface CommentRepository extends JpaRepository {
14 |
15 | @Query("SELECT c FROM Comment c WHERE c.post.id = :postId ORDER BY c.createdAt ASC")
16 | List findByPostIdOrderByCreatedAtAsc(@Param("postId") String postId);
17 |
18 | @Query("SELECT c FROM Comment c WHERE c.id = :commentId AND c.post.id = :postId")
19 | Optional findByIdAndPostId(@Param("commentId") String commentId, @Param("postId") String postId);
20 | }
21 |
--------------------------------------------------------------------------------
/complete/javascript/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "github-copilot-bootcamp-react",
3 | "private": true,
4 | "version": "0.1.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview",
10 | "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0"
11 | },
12 | "dependencies": {
13 | "axios": "^1.9.0",
14 | "react": "^18.2.0",
15 | "react-dom": "^18.2.0",
16 | "react-router-dom": "^6.30.1"
17 | },
18 | "devDependencies": {
19 | "@playwright-testing-library/test": "^4.5.0",
20 | "@playwright/test": "^1.51.1",
21 | "@vitejs/plugin-react": "^4.2.0",
22 | "autoprefixer": "^10.4.16",
23 | "eslint": "^8.53.0",
24 | "eslint-plugin-react": "^7.33.2",
25 | "eslint-plugin-react-hooks": "^4.6.0",
26 | "eslint-plugin-react-refresh": "^0.4.4",
27 | "postcss": "^8.4.31",
28 | "tailwindcss": "^3.3.5",
29 | "vite": "^6.3.5"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/repository/LikeRepository.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.repository;
2 |
3 | import com.contoso.socialapp.entity.Like;
4 | import com.contoso.socialapp.entity.LikeId;
5 | import org.springframework.data.jpa.repository.JpaRepository;
6 | import org.springframework.data.jpa.repository.Query;
7 | import org.springframework.data.repository.query.Param;
8 | import org.springframework.stereotype.Repository;
9 |
10 | import java.util.Optional;
11 |
12 | @Repository
13 | public interface LikeRepository extends JpaRepository {
14 |
15 | @Query("SELECT l FROM Like l WHERE l.post.id = :postId AND l.username = :username")
16 | Optional findByPostIdAndUsername(@Param("postId") String postId, @Param("username") String username);
17 |
18 | @Query("DELETE FROM Like l WHERE l.post.id = :postId AND l.username = :username")
19 | void deleteByPostIdAndUsername(@Param("postId") String postId, @Param("username") String username);
20 | }
21 |
--------------------------------------------------------------------------------
/complete/javascript/README.md:
--------------------------------------------------------------------------------
1 | # JavaScript App Sample
2 |
3 | ## Prerequisites
4 |
5 | Refer to the [README](../../README.md) doc for preparation.
6 |
7 | ## Getting Started
8 |
9 | ### Run FastAPI Backend
10 |
11 | Use [Python App Sample](../python/).
12 |
13 | > **NOTE**: If you use GitHub Codespaces, make sure that the Python app port, `8000`, is set to **public**.
14 |
15 | ### Run React Frontend
16 |
17 | 1. Get the repository root.
18 |
19 | ```bash
20 | # bash/zsh
21 | REPOSITORY_ROOT=$(git rev-parse --show-toplevel)
22 | ```
23 |
24 | ```powershell
25 | # PowerShell
26 | $REPOSITORY_ROOT = git rev-parse --show-toplevel
27 | ```
28 |
29 | 1. Install npm packages.
30 |
31 | ```bash
32 | cd $REPOSITORY_ROOT/complete/javascript
33 | npm install
34 | ```
35 |
36 | 1. Run the app.
37 |
38 | ```bash
39 | npm run dev
40 | ```
41 |
42 | 1. Open a web browser and navigate to `http://localhost:3000`.
43 | 1. Verify if the web application is running properly.
44 |
--------------------------------------------------------------------------------
/localisation/ko-kr/docs/custom-instructions/dotnet/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | # .NET 개발 규칙
2 |
3 | 당신은 시니어 .NET 개발자이며 C#, ASP.NET Core, Minimal API, Blazor 및 .NET Aspire의 전문가입니다.
4 |
5 | ## 코드 스타일 및 구조
6 |
7 | - 정확한 예제와 함께 간결하고 관용적인 C# 코드를 작성하세요.
8 | - .NET 및 ASP.NET Core 규칙과 모범 사례를 따르세요.
9 | - 적절하게 객체지향 및 함수형 프로그래밍 패턴을 사용하세요.
10 | - 컬렉션 작업에는 LINQ와 람다 표현식을 선호하세요.
11 | - 설명적인 변수 및 메서드명을 사용하세요 (예: 'IsUserSignedIn', 'CalculateTotal').
12 | - .NET 규칙에 따라 파일을 구조화하세요 (Controllers, Models, Services 등).
13 | - 성능과 응답성을 향상시키기 위해 가능한 모든 곳에서 비동기 작업에 async/await를 사용하세요.
14 |
15 | ## 명명 규칙
16 |
17 | - 클래스명, 메서드명, public 멤버에는 PascalCase를 사용하세요.
18 | - 로컬 변수와 private 필드에는 camelCase를 사용하세요.
19 | - 상수에는 UPPERCASE를 사용하세요.
20 | - 인터페이스명에는 "I"를 접두사로 붙이세요 (예: 'IUserService').
21 |
22 | ---
23 |
24 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
25 |
--------------------------------------------------------------------------------
/complete/compose.yaml:
--------------------------------------------------------------------------------
1 | version: '3.8'
2 |
3 | networks:
4 | contoso:
5 | driver: bridge
6 |
7 | services:
8 | contoso-backend:
9 | build:
10 | context: .
11 | dockerfile: Dockerfile.java
12 | container_name: contoso-backend
13 | ports:
14 | - "8080:8080"
15 | environment:
16 | - CODESPACE_NAME=${CODESPACE_NAME}
17 | - GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN=${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}
18 | networks:
19 | - contoso
20 | healthcheck:
21 | test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
22 | interval: 30s
23 | timeout: 3s
24 | start_period: 60s
25 | retries: 3
26 |
27 | contoso-frontend:
28 | build:
29 | context: .
30 | dockerfile: Dockerfile.dotnet
31 | container_name: contoso-frontend
32 | ports:
33 | - "3030:8080"
34 | environment:
35 | - ApiSettings__BaseUrl=http://contoso-backend:8080/api
36 | networks:
37 | - contoso
38 | depends_on:
39 | - contoso-backend
40 |
--------------------------------------------------------------------------------
/localisation/ko-kr/docs/custom-instructions/java/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | # Java 개발 규칙
2 |
3 | 당신은 시니어 Java 개발자이며 Java 프로그래밍, Spring Boot, Spring Boot CLI, Spring Framework, Maven, Gradle, JUnit 및 관련 Java 기술의 전문가입니다.
4 |
5 | ## 코드 스타일 및 구조
6 |
7 | - 정확한 Spring Boot 예제와 함께 깔끔하고 효율적이며 잘 문서화된 Java 코드를 작성하세요.
8 | - 코드 전반에 걸쳐 Spring Boot 모범 사례와 규칙을 사용하세요.
9 | - 웹 서비스를 생성할 때 RESTful API 설계 패턴을 구현하세요.
10 | - camelCase 관례를 따르는 설명적인 메서드 및 변수명을 사용하세요.
11 | - Spring Boot 애플리케이션 구조: 컨트롤러, 서비스, 리포지토리, 모델, 구성.
12 |
13 | ## Spring Boot 특정 사항
14 |
15 | - 빠른 프로젝트 설정과 종속성 관리를 위해 Spring Boot starter를 사용하세요.
16 | - 어노테이션의 적절한 사용을 구현하세요 (예: @SpringBootApplication, @RestController, @Service).
17 | - Spring Boot의 자동 구성 기능을 효과적으로 활용하세요.
18 | - @ControllerAdvice와 @ExceptionHandler를 사용하여 적절한 예외 처리를 구현하세요.
19 |
20 | ---
21 |
22 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
4 | > Please provide us with the following information:
5 | > ---------------------------------------------------------------
6 |
7 | ### This issue is for a: (mark with an `x`)
8 | ```
9 | - [ ] bug report -> please search issues before submitting
10 | - [ ] feature request
11 | - [ ] documentation issue or request
12 | - [ ] regression (a behavior that used to work and stopped in a new release)
13 | ```
14 |
15 | ### Minimal steps to reproduce
16 | >
17 |
18 | ### Any log messages given by the failure
19 | >
20 |
21 | ### Expected/desired behavior
22 | >
23 |
24 | ### OS and Version?
25 | > Windows 7, 8 or 10. Linux (which distribution). macOS (Yosemite? El Capitan? Sierra?)
26 |
27 | ### Versions
28 | >
29 |
30 | ### Mention any other details that might be useful
31 |
32 | > ---------------------------------------------------------------
33 | > Thanks! We'll be in touch soon.
34 |
--------------------------------------------------------------------------------
/localisation/ko-kr/complete/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # .NET 앱 샘플
2 |
3 | ## 전제 조건
4 |
5 | 준비를 위해 [README](../../README.md) 문서를 참조하세요.
6 |
7 | ## 시작하기
8 |
9 | ### Spring Boot 백엔드 실행
10 |
11 | [Java 앱 샘플](../java/)을 사용하세요.
12 |
13 | > **참고**: GitHub Codespaces를 사용하는 경우, Java 앱 포트 `8080`이 **public**으로 설정되어 있는지 확인하세요.
14 |
15 | ### Blazor 프론트엔드 실행
16 |
17 | 1. 저장소 루트를 가져오세요.
18 |
19 | ```bash
20 | # bash/zsh
21 | REPOSITORY_ROOT=$(git rev-parse --show-toplevel)
22 | ```
23 |
24 | ```powershell
25 | # PowerShell
26 | $REPOSITORY_ROOT = git rev-parse --show-toplevel
27 | ```
28 |
29 | 1. 앱을 실행하세요.
30 |
31 | ```bash
32 | dotnet watch run --project $REPOSITORY_ROOT/complete/dotnet/Contoso.BlazorApp
33 | ```
34 |
35 | 1. 웹 애플리케이션이 제대로 실행되는지 확인하세요.
36 |
37 | ---
38 |
39 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
40 |
--------------------------------------------------------------------------------
/localisation/zh-cn/docs/README.md:
--------------------------------------------------------------------------------
1 | # 自定进度学习指南
2 |
3 | 以下是自定进度学习指南材料。使用它们来构建应用程序!
4 |
5 | | 步骤 | 链接 |
6 | |------------------------------------|----------------------------------------------------|
7 | | 00: 开发环境 | [00-setup.md](./00-setup.md) |
8 | | 01: Python 后端开发 | [01-python.md](./01-python.md) |
9 | | 02: JavaScript 前端开发 | [02-javascript.md](./02-javascript.md) |
10 | | 03: 从 Python 迁移到 Java | [03-java.md](./03-java.md) |
11 | | 04: 从 JavaScript 迁移到 .NET | [04-dotnet.md](./04-dotnet.md) |
12 | | 05: 容器化 | [05-containerization.md](./05-containerization.md) |
13 |
14 | ---
15 |
16 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
17 |
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/entity/Like.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.entity;
2 |
3 | import jakarta.persistence.*;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 | import lombok.AllArgsConstructor;
7 |
8 | import java.time.LocalDateTime;
9 |
10 | @Entity
11 | @Table(name = "likes")
12 | @Data
13 | @NoArgsConstructor
14 | @AllArgsConstructor
15 | @IdClass(LikeId.class)
16 | public class Like {
17 |
18 | @Id
19 | @ManyToOne(fetch = FetchType.LAZY)
20 | @JoinColumn(name = "post_id", nullable = false)
21 | private Post post;
22 |
23 | @Id
24 | @Column(nullable = false, length = 50)
25 | private String username;
26 |
27 | @Column(name = "liked_at", nullable = false)
28 | private LocalDateTime likedAt;
29 |
30 | @PrePersist
31 | protected void onCreate() {
32 | likedAt = LocalDateTime.now();
33 | }
34 |
35 | // Helper method to get postId
36 | public String getPostId() {
37 | return post != null ? post.getId() : null;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/localisation/ja-jp/docs/README.md:
--------------------------------------------------------------------------------
1 | # 自習学習指導書
2 |
3 | こちらは自習学習指導書の教材です。これらを使用してアプリを構築してください!
4 |
5 | | ステップ | リンク |
6 | |-------------------------------------|----------------------------------------------------|
7 | | 00: 開発環境 | [00-setup.md](./00-setup.md) |
8 | | 01: Python バックエンド開発 | [01-python.md](./01-python.md) |
9 | | 02: JavaScript フロントエンド開発 | [02-javascript.md](./02-javascript.md) |
10 | | 03: Python から Java への移行 | [03-java.md](./03-java.md) |
11 | | 04: JavaScript から .NET への移行 | [04-dotnet.md](./04-dotnet.md) |
12 | | 05: コンテナ化 | [05-containerization.md](./05-containerization.md) |
13 |
14 | ---
15 |
16 | **免責事項**: この文書は[GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)によってローカライズされています。そのため、間違いを含む可能性があります。不適切または間違った翻訳を見つけた場合は、[issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)を作成してください。
17 |
--------------------------------------------------------------------------------
/localisation/zh-cn/docs/custom-instructions/containerization/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | # DevOps 规则
2 |
3 | 您是一位高级 DevOps 工程师,也是容器化、Docker、Dockerfile、Docker Compose 和 Kubernetes 的专家。
4 |
5 | ## 通用指南
6 |
7 | ### 基本原则
8 |
9 | - 所有代码、文档和注释使用英语。
10 | - 优先考虑模块化、可重用和可扩展的代码。
11 | - 遵循命名约定:
12 | - 变量、函数和方法名使用 camelCase。
13 | - 类名使用 PascalCase。
14 | - 文件名和目录结构使用 snake_case。
15 | - 环境变量使用 UPPER_CASE。
16 | - 避免硬编码值;使用环境变量或配置文件。
17 | - 尽可能应用基础设施即代码 (IaC) 原则。
18 | - 在访问和权限方面始终考虑最小特权原则。
19 |
20 | ### DevOps 原则
21 |
22 | - 自动化重复性任务,避免手动干预。
23 | - 编写模块化、可重用的 CI/CD 流水线。
24 | - 使用带有安全注册表的容器化应用程序。
25 | - 使用 Azure Key Vault 或其他密钥管理解决方案管理密钥。
26 | - 通过应用蓝绿或金丝雀部署策略构建弹性系统。
27 |
28 | ## 特定场景
29 |
30 | ### Docker 和 Docker Compose
31 |
32 | - 在 Dockerfile 中使用多阶段构建来优化镜像大小。
33 | - 确保 Dockerfile 是幂等的,可以多次构建而不产生副作用。
34 | - 使用 Docker Compose 进行本地开发和测试环境。
35 |
36 | ---
37 |
38 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
39 |
--------------------------------------------------------------------------------
/localisation/ja-jp/complete/dotnet/README.md:
--------------------------------------------------------------------------------
1 | # .NETアプリケーション サンプル
2 |
3 | ## 前提条件
4 |
5 | 準備については、[README](../../README.md)ドキュメントを参照してください。
6 |
7 | ## はじめに
8 |
9 | ### Spring Bootバックエンドの実行
10 |
11 | [Java App Sample](../java/)を使用してください。
12 |
13 | > **注意**: GitHub Codespacesを使用する場合、Javaアプリケーションのポート`8080`が**public**に設定されていることを確認してください。
14 |
15 | ### Blazorフロントエンドの実行
16 |
17 | 1. リポジトリのルートを取得します。
18 |
19 | ```bash
20 | # bash/zsh
21 | REPOSITORY_ROOT=$(git rev-parse --show-toplevel)
22 | ```
23 |
24 | ```powershell
25 | # PowerShell
26 | $REPOSITORY_ROOT = git rev-parse --show-toplevel
27 | ```
28 |
29 | 1. アプリケーションを実行します。
30 |
31 | ```bash
32 | dotnet watch run --project $REPOSITORY_ROOT/complete/dotnet/Contoso.BlazorApp
33 | ```
34 |
35 | 1. Webアプリケーションが正常に動作しているかを確認します。
36 |
37 | ---
38 |
39 | **免責事項**: この文書は[GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)によってローカライズされています。そのため、間違いを含む可能性があります。不適切または間違った翻訳を見つけた場合は、[issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)を作成してください。
40 |
--------------------------------------------------------------------------------
/localisation/ko-kr/docs/README.md:
--------------------------------------------------------------------------------
1 | # 자기 주도 학습 지침
2 |
3 | 자기 주도 학습 지침 자료입니다. 이를 사용하여 앱을 구축하세요!
4 |
5 | | 단계 | 링크 |
6 | |-------------------------------------|----------------------------------------------------|
7 | | 00: 개발 환경 | [00-setup.md](./00-setup.md) |
8 | | 01: Python 백엔드 개발 | [01-python.md](./01-python.md) |
9 | | 02: JavaScript 프론트엔드 개발 | [02-javascript.md](./02-javascript.md) |
10 | | 03: Python에서 Java로 마이그레이션 | [03-java.md](./03-java.md) |
11 | | 04: JavaScript에서 .NET으로 마이그레이션 | [04-dotnet.md](./04-dotnet.md) |
12 | | 05: 컨테이너화 | [05-containerization.md](./05-containerization.md) |
13 |
14 | ---
15 |
16 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
17 |
--------------------------------------------------------------------------------
/localisation/zh-cn/complete/javascript/README.md:
--------------------------------------------------------------------------------
1 | # JavaScript 应用示例
2 |
3 | ## 先决条件
4 |
5 | 请参考 [README](../../README.md) 文档进行准备。
6 |
7 | ## 入门指南
8 |
9 | ### 运行 FastAPI 后端
10 |
11 | 使用 [Python 应用示例](../python/)。
12 |
13 | > **注意**:如果您使用 GitHub Codespaces,请确保 Python 应用端口 `8000` 设置为**公共**。
14 |
15 | ### 运行 React 前端
16 |
17 | 1. 获取存储库根目录。
18 |
19 | ```bash
20 | # bash/zsh
21 | REPOSITORY_ROOT=$(git rev-parse --show-toplevel)
22 | ```
23 |
24 | ```powershell
25 | # PowerShell
26 | $REPOSITORY_ROOT = git rev-parse --show-toplevel
27 | ```
28 |
29 | 1. 安装 npm 包。
30 |
31 | ```bash
32 | cd $REPOSITORY_ROOT/complete/javascript
33 | npm install
34 | ```
35 |
36 | 1. 运行应用。
37 |
38 | ```bash
39 | npm run dev
40 | ```
41 |
42 | 1. 打开网络浏览器并导航到 `http://localhost:3000`。
43 | 1. 验证 Web 应用程序是否正常运行。
44 |
45 | ---
46 |
47 | **免责声明**: 本文档由 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot) 本地化。因此,可能包含错误。如果您发现任何不当或错误的翻译,请创建一个 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)。
48 |
--------------------------------------------------------------------------------
/complete/javascript/src/App.jsx:
--------------------------------------------------------------------------------
1 | import {
2 | BrowserRouter as Router,
3 | Routes,
4 | Route,
5 | Navigate,
6 | } from "react-router-dom";
7 | import { AuthProvider } from "./context/AuthContext";
8 |
9 | import HomePage from "./pages/HomePage";
10 | import PostDetailPage from "./pages/PostDetailPage";
11 | import SearchPage from "./pages/SearchPage";
12 | import ProfilePage from "./pages/ProfilePage";
13 |
14 | function App() {
15 | return (
16 |
17 |
20 |
21 | } />
22 | } />
23 | } />
24 | } />
25 | } />
26 | } />
27 |
28 |
29 |
30 | );
31 | }
32 |
33 | export default App;
--------------------------------------------------------------------------------
/localisation/ko-kr/docs/custom-instructions/javascript/copilot-instructions.md:
--------------------------------------------------------------------------------
1 | # JavaScript 개발 규칙
2 |
3 | 당신은 시니어 프론트엔드 개발자이며 ReactJS, NextJS, ViteJS, JavaScript, TypeScript, HTML, CSS 및 최신 UI/UX 프레임워크(예: TailwindCSS, Shadcn, Radix) 전문가입니다.
4 |
5 | 당신은 사려 깊고 미묘한 답변을 제공하며 추론에 뛰어납니다. 정확하고 사실적이며 사려 깊은 답변을 신중하게 제공하고 추론의 천재입니다.
6 |
7 | ## 핵심 원칙
8 |
9 | - 사용자의 요구사항을 신중하고 정확하게 따르세요.
10 | - 먼저 단계별로 생각하세요 - 매우 자세히 작성된 의사코드로 구축할 계획을 설명하세요.
11 | - 확인한 후 코드를 작성하세요!
12 | - 항상 올바르고 모범 사례인 DRY 원칙(Don't Repeat Yourself)을 따르며, 버그가 없고 완전히 기능적이고 작동하는 코드를 작성하세요. 또한 아래 나열된 코드 구현 가이드라인 규칙에 맞춰야 합니다.
13 | - 성능보다는 쉽고 읽기 쉬운 코드에 집중하세요.
14 | - 요청된 모든 기능을 완전히 구현하세요.
15 | - TODO, 플레이스홀더 또는 누락된 부분을 남기지 마세요.
16 | - 코드가 완전한지 확인하세요! 철저히 최종 검증하세요.
17 | - 필요한 모든 imports를 포함하고 주요 컴포넌트의 적절한 명명을 보장하세요.
18 | - 간결하게 다른 산문을 최소화하세요.
19 | - 올바른 답이 없을 수 있다고 생각하면 그렇게 말하세요.
20 | - 답을 모르면 추측하는 대신 모른다고 말하세요.
21 |
22 | ---
23 |
24 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
25 |
--------------------------------------------------------------------------------
/complete/dotnet/Contoso.BlazorApp/Models/Comment.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace Contoso.BlazorApp.Models;
4 |
5 | public class Comment
6 | {
7 | public string Id { get; set; } = string.Empty;
8 | public string PostId { get; set; } = string.Empty;
9 | public string Username { get; set; } = string.Empty;
10 | public string Content { get; set; } = string.Empty;
11 | public DateTime CreatedAt { get; set; }
12 | public DateTime UpdatedAt { get; set; }
13 | }
14 |
15 | public class CreateCommentRequest
16 | {
17 | [Required]
18 | [StringLength(50, MinimumLength = 1)]
19 | public string Username { get; set; } = string.Empty;
20 |
21 | [Required]
22 | [StringLength(1000, MinimumLength = 1)]
23 | public string Content { get; set; } = string.Empty;
24 | }
25 |
26 | public class UpdateCommentRequest
27 | {
28 | [Required]
29 | [StringLength(50, MinimumLength = 1)]
30 | public string Username { get; set; } = string.Empty;
31 |
32 | [Required]
33 | [StringLength(1000, MinimumLength = 1)]
34 | public string Content { get; set; } = string.Empty;
35 | }
36 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ## Purpose
2 |
3 | * ...
4 |
5 | ## Does this introduce a breaking change?
6 |
7 | ```
8 | [ ] Yes
9 | [ ] No
10 | ```
11 |
12 | ## Pull Request Type
13 | What kind of change does this Pull Request introduce?
14 |
15 |
16 | ```
17 | [ ] Bugfix
18 | [ ] Feature
19 | [ ] Code style update (formatting, local variables)
20 | [ ] Refactoring (no functional changes, no api changes)
21 | [ ] Documentation content changes
22 | [ ] Other... Please describe:
23 | ```
24 |
25 | ## How to Test
26 | * Get the code
27 |
28 | ```
29 | git clone [repo-address]
30 | cd [repo-name]
31 | git checkout [branch-name]
32 | npm install
33 | ```
34 |
35 | * Test the code
36 |
37 | ```
38 | ```
39 |
40 | ## What to Check
41 | Verify that the following are valid
42 | * ...
43 |
44 | ## Other Information
45 |
--------------------------------------------------------------------------------
/localisation/ko-kr/complete/javascript/README.md:
--------------------------------------------------------------------------------
1 | # JavaScript 앱 샘플
2 |
3 | ## 전제 조건
4 |
5 | 준비를 위해 [README](../../README.md) 문서를 참조하세요.
6 |
7 | ## 시작하기
8 |
9 | ### FastAPI 백엔드 실행
10 |
11 | [Python 앱 샘플](../python/)을 사용하세요.
12 |
13 | > **참고**: GitHub Codespaces를 사용하는 경우, Python 앱 포트 `8000`이 **public**으로 설정되어 있는지 확인하세요.
14 |
15 | ### React 프론트엔드 실행
16 |
17 | 1. 저장소 루트를 가져오세요.
18 |
19 | ```bash
20 | # bash/zsh
21 | REPOSITORY_ROOT=$(git rev-parse --show-toplevel)
22 | ```
23 |
24 | ```powershell
25 | # PowerShell
26 | $REPOSITORY_ROOT = git rev-parse --show-toplevel
27 | ```
28 |
29 | 1. npm 패키지를 설치하세요.
30 |
31 | ```bash
32 | cd $REPOSITORY_ROOT/complete/javascript
33 | npm install
34 | ```
35 |
36 | 1. 앱을 실행하세요.
37 |
38 | ```bash
39 | npm run dev
40 | ```
41 |
42 | 1. 웹 브라우저를 열고 `http://localhost:3000`으로 이동하세요.
43 | 1. 웹 애플리케이션이 제대로 실행되는지 확인하세요.
44 |
45 | ---
46 |
47 | **면책조항**: 이 문서는 [GitHub Copilot](https://docs.github.com/copilot/about-github-copilot/what-is-github-copilot)에 의해 현지화되었습니다. 따라서 실수가 포함될 수 있습니다. 부적절하거나 잘못된 번역을 발견하면 [issue](https://github.com/microsoft/github-copilot-vibe-coding-workshop/issues/new)를 생성해 주세요.
48 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Microsoft Corporation.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE
--------------------------------------------------------------------------------
/complete/java/socialapp/src/main/java/com/contoso/socialapp/controller/HealthController.java:
--------------------------------------------------------------------------------
1 | package com.contoso.socialapp.controller;
2 |
3 | import lombok.extern.slf4j.Slf4j;
4 | import org.springframework.http.ResponseEntity;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | import java.util.Map;
10 |
11 | /**
12 | * Health check controller for the Social App.
13 | */
14 | @Slf4j
15 | @RestController
16 | @RequestMapping("/api")
17 | public class HealthController {
18 |
19 | /**
20 | * Health check endpoint.
21 | */
22 | @GetMapping("/health")
23 | public ResponseEntity