You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: DownloadableCodeProjects/standalone-lab-projects/sdd-get-started-rss-feed/StakeholderDocuments/ProjectGoals.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,6 +41,16 @@ The MVP is complete when:
41
41
42
42
Test with a known-good RSS feed like <https://devblogs.microsoft.com/dotnet/feed/>.
43
43
44
+
### Local development checklist
45
+
46
+
Before testing the MVP, verify:
47
+
48
+
-[ ] Backend runs without errors and listens on the configured port
49
+
-[ ] Frontend runs without errors and loads in the browser
50
+
-[ ] Frontend configuration (`wwwroot/appsettings.json`) points to the correct backend URL
51
+
-[ ] Backend CORS allows the frontend origin
52
+
-[ ] Browser DevTools console shows no connection errors when loading the page
53
+
44
54
## Future enhancements (post-MVP)
45
55
46
56
Once the basic demonstration is working, these features could be added:
Copy file name to clipboardExpand all lines: DownloadableCodeProjects/standalone-lab-projects/sdd-get-started-rss-feed/StakeholderDocuments/TechStack.md
+35-2Lines changed: 35 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,8 +47,41 @@ These choices make development fast while keeping the architecture clean for fut
47
47
48
48
## Local development
49
49
50
-
- The backend API and frontend UI run on separate localhost ports
51
-
- The UI needs to know the API URL (configure via `ApiBaseUrl` setting)
50
+
### Port configuration
51
+
52
+
The backend API and frontend UI run on separate localhost ports. **Port consistency is critical** - the ports must be coordinated between three locations:
53
+
54
+
1.**Backend port** (defined in `backend/RSSFeedReader.Api/Properties/launchSettings.json`):
55
+
- Default: `http://localhost:5151`
56
+
- This is where the API listens for requests
57
+
58
+
2.**Frontend port** (defined in `frontend/RSSFeedReader.UI/Properties/launchSettings.json`):
59
+
- Default: `http://localhost:5213`
60
+
- This is where the Blazor app runs
61
+
62
+
3.**API base URL** (configured in `frontend/RSSFeedReader.UI/wwwroot/appsettings.json`):
Copy file name to clipboardExpand all lines: Instructions/Labs/LAB_AK_14_get-started-spec-driven-development.md
+14-46Lines changed: 14 additions & 46 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,19 +10,19 @@ GitHub Spec Kit is an open-source toolkit that enables Spec-Driven Development (
10
10
11
11
In this exercise, you learn how to use the GitHub Spec Kit to develop a new greenfield application. You begin by initializing the GitHub Spec Kit for a new .NET project. You then use GitHub Spec Kit workflows to create the constitution, specification, plan, and tasks documents for the new application. Finally, you use GitHub Spec Kit's implementation workflow to implement an initial MVP version of the application.
12
12
13
-
This exercise should take approximately **75** minutes to complete.
13
+
This exercise should take approximately **60** minutes to complete.
14
14
15
15
> **IMPORTANT**: To complete this exercise, you must provide your own GitHub account and GitHub Copilot subscription. If you don't have a GitHub account, you can <ahref="https://github.com/"target="_blank">sign up</a> for a free individual account and use a GitHub Copilot Free plan to complete the exercise. If you have access to a GitHub Copilot Pro, GitHub Copilot Pro+, GitHub Copilot Business, or GitHub Copilot Enterprise subscription from within your lab environment, you can use your existing GitHub Copilot subscription to complete this exercise.
16
16
17
17
## Before you start
18
18
19
-
Your lab environment MUST include the following resources: Git 2.48 or later, .NET SDK 8.0 or later (.NET 10 is the default), Visual Studio Code with the C# Dev Kit and GitHub Copilot Chat extensions, SQLite, Python 3.11 or later, the uv package manager, Specify CLI, and access to a GitHub account with GitHub Copilot enabled.
19
+
Your lab environment MUST include the following resources: Git 2.48 or later, .NET SDK 8.0 or later, Visual Studio Code with the C# Dev Kit and GitHub Copilot Chat extensions, Python 3.11 or later, the uv package manager, Specify CLI, and access to a GitHub account with GitHub Copilot enabled.
20
20
21
21
For help with configuring your lab environment, open the following link in a browser: <ahref="https://go.microsoft.com/fwlink/?linkid=2345907"target="_blank">Configure your GitHub Spec Kit lab environment</a>.
22
22
23
23
## Exercise scenario
24
24
25
-
You're a software developer working for a consulting firm that's moving to a spec-driven development (SDD) methodology using GitHub Spec Kit and GitHub Copilot in Visual Studio Code. Your firm has asked you to start using the SDD methodology and GitHub Spec Kit as soon as possible. One of your clients, Contoso Corporation, needs you to develop an RSS feed reader app for internal employees. You decide to use the SDD methodology for this greenfield project. Using a SDD methodology with GitHub Spec Kit ensures that an MVP version of the application is delivered quickly, and that additional features can be rolled out seamlessly.
25
+
You're a software developer working for a consulting firm that's moving to a spec-driven development (SDD) methodology using GitHub Spec Kit and GitHub Copilot in Visual Studio Code. Your firm has asked you to start using the SDD methodology and GitHub Spec Kit as soon as possible. One of your clients, Contoso Corporation, needs you to develop an RSS feed reader app for internal employees. You decide to use the SDD methodology to create an MVP version of the application that can be used as a proof-of-concept. Using a SDD methodology with GitHub Spec Kit ensures that an MVP version of the application is delivered quickly, and that additional features can be rolled out seamlessly when needed.
26
26
27
27
Contoso's stakeholders documented the project goals, features, and technical requirements for the RSS feed reader app. This information can be used to help generate the constitution, specification, plan, and tasks documents.
28
28
@@ -319,7 +319,7 @@ Use the following steps to complete this task:
319
319
1. In the Chat view, to start a constitution workflow using a combination of inline text and stakeholder documents, enter the following command:
320
320
321
321
```plaintext
322
-
/speckit.constitution --text "Code projects emphasize security, privacy, accessibility, performance, reliability, observability, release management, documentation, dependency management, and code quality. Ensure that all principles are specific, actionable, and relevant to the project context." --files StakeholderDocuments/ProjectGoals.md StakeholderDocuments/AppFeatures.md StakeholderDocuments/TechStack.md
322
+
/speckit.constitution --text "Code projects emphasize security, privacy, reliability, and code quality. Ensure that all principles are specific, actionable, and relevant to the project context." --files StakeholderDocuments/ProjectGoals.md StakeholderDocuments/AppFeatures.md StakeholderDocuments/TechStack.md
323
323
```
324
324
325
325
> **NOTE**: The /speckit.constitution command can be run multiple times in the same project to refine or extend the constitution.md file. Providing detailed inputs should generate a more accurate and comprehensive constitution.
@@ -337,7 +337,7 @@ Use the following steps to complete this task:
337
337
Each principle should be clearly stated and actionable. For example:
338
338
339
339
- ❌ Vague: "Apply security best practices." is too general.
340
-
- ✅ Clear: "HTML content MUST be sanitized before rendering." is specific and actionable.
340
+
- ✅ Clear: "Validate feed URLs (reject file://, data:, javascript: schemes)." is specific and actionable.
341
341
342
342
If any critical requirements are missing or unclear, you can edit the constitution.md file directly to add or modify principles.
343
343
@@ -389,10 +389,10 @@ Use the following steps to complete this task:
389
389
390
390
1. Create a summary description of the RSS Feed Reader app based on the stakeholder documents.
391
391
392
-
The summary description should be concise (a couple sentences) and capture the core functionality of the RSS Feed Reader app. For example:
392
+
The summary description should be concise (a sentence or two) and capture the core functionality of the RSS Feed Reader app. For example:
393
393
394
394
```plaintext
395
-
"MVP RSS reader: a local-first RSS/Atom reader where users can subscribe and manage feeds, add them via URL or website discovery, refresh to see updates, and read items with a clear newest-first, read/unread flow. Data and state persist on the device, with an item view, open-original links, and the ability to mark items (or all) as read. Reliability and safety are core: the system handles common feed issues gracefully, avoids duplicates, shows clear errors, and renders content securely with HTTPS and HTML sanitization."
395
+
"MVP RSS reader: a simple RSS/Atom feed reader that demonstrates the most basic capability (subscribe and viewitems) without the complexity of a production-ready application."
396
396
```
397
397
398
398
1. Close any files that you have open in the editor.
@@ -404,7 +404,7 @@ Use the following steps to complete this task:
404
404
1. In the Chat view, to start a specification workflow that generates a spec.md file using information from your stakeholders document, enter the following command:
405
405
406
406
```plaintext
407
-
/speckit.specify --text "MVP RSS reader: a local-first RSS/Atom reader where users can subscribe and manage feeds, add them via URL or website discovery, refresh to see updates, and read items with a clear newest-first, read/unread flow. Data and state persist on the device, with an item view, open-original links, and the ability to mark items (or all) as read. Reliability and safety are core: the system handles common feed issues gracefully, avoids duplicates, shows clear errors, and renders content securely with HTTPS and HTML sanitization." --files StakeholderDocuments/ProjectGoals.md StakeholderDocuments/AppFeatures.md
407
+
/speckit.specify --text "MVP RSS reader: a simple RSS/Atom feed reader that demonstrates the most basic capability (subscribe and viewitems) without the complexity of a production-ready application." --files StakeholderDocuments/ProjectGoals.md StakeholderDocuments/AppFeatures.md
408
408
```
409
409
410
410
If you don't specify the `--text` option, you might be asked to provide a description of the app features before you can continue.
@@ -512,8 +512,6 @@ Use the following steps to complete this task:
512
512
513
513
For a production scenario, you need to ensure that the plan provides a comprehensive description of the technical context and a clearly defined implementation strategy for the new feature. The research, quickstart, and data model files should complement the plan by providing additional context and details. For this exercise, focus on becoming familiar with the content associated with each of the files.
514
514
515
-
> **IMPORTANT**: This lab supports environments with .NET 8 or .NET 9 installed. However, .NET 10 is specified as the target framework in the stakeholder documents. If your environment includes .NET 8 or .NET 9 (but not .NET 10), you need to update the plan.md and quickstart.md files accordingly.
516
-
517
515
1. After reviewing the files, accept the updates.
518
516
519
517
If the plan omits important details or makes assumptions you disagree with, you can:
@@ -581,24 +579,6 @@ Use the following steps to complete this task:
581
579
- Security requirements should have corresponding implementation tasks.
582
580
- Performance requirements should have testing tasks.
583
581
584
-
1. Ensure that each task is specific and actionable:
- ❌ Vague: "Enforce security and reliability requirements in the HTTP client"
588
-
589
-
Verify that tasks have reasonable scope:
590
-
591
-
- Developers should be able to complete individual tasks in a few hours to a day.
592
-
- If a task seems too large it might need to be broken down during implementation.
593
-
594
-
You can add task dependencies or notes if needed. For example:
595
-
596
-
```markdown
597
-
- [ ] T026 Implement refresh pipeline orchestration (fetch -> parse -> sanitize -> persist -> status update) in backend/src/RssFeedReader.Domain/Services/FeedRefreshService.cs
598
-
- Depends on: T021, T022, T024, T025
599
-
- Note: This task implicitly depends on several earlier foundational tasks (HTTP fetcher, parser, sanitizer, identity hashing)
600
-
```
601
-
602
582
1. Accept the suggested file updates, and then save the **tasks.md** file.
603
583
604
584
1. Commit the changes and then sync the updates.
@@ -629,7 +609,7 @@ Use the following steps to complete this task:
629
609
630
610
```plaintext
631
611
**Phases**: Setup → Foundation → US1 only
632
-
**Tasks**: T001 - T057 (57 tasks)
612
+
**Tasks**: T001 - T048 (48 tasks)
633
613
**Deliverable**: Users can add a known-good feed URL; refresh; see items; restart and confirm persistence.
634
614
```
635
615
@@ -701,33 +681,21 @@ Use the following steps to complete this task:
701
681
702
682
1. Save all updated files.
703
683
704
-
1. Ask GitHub Copilot to create a VS Code "Run and Debug" launch configuration that you can use to start both apps with one click.
705
-
706
-
For example, you could enter the following prompt in the Chat view:
684
+
1. Start the backend application and then the frontend application.
707
685
708
-
```plaintext
709
-
Create a VS Code "Run and Debug" launch configuration that I can use to start both apps with one click. Provide instructions for running the apps using the launch configuration.
710
-
```
686
+
Ensure that both applications are running locally without errors.
711
687
712
-
1. Use the launch configuration to run the backend and frontend applications.
688
+
1. Open a browser and navigate to the frontend application.
713
689
714
-
If you encounter any errors, provide a detailed description of the error message and any relevant logs to GitHub Copilot for assistance. You can launch the backend and frontend separately if needed.
715
-
716
-
1. Open a browser and navigate to the Subscriptions page of the frontend application.
717
-
718
-
The frontend URL should be similar to the following: `http://localhost:5239/subscriptions`.
690
+
The frontend URL should be similar to the following: `http://localhost:5239`.
719
691
720
692
1. Take a few minutes to verify the acceptance scenarios for the MVP application.
721
693
722
694
Here are some feeds that you can use to test the application:
723
695
724
696
- https://devblogs.microsoft.com/dotnet/feed/ (The .NET Blog)
725
697
- https://devblogs.microsoft.com/visualstudio/feed/ (Visual Studio Blog)
726
-
- https://devblogs.microsoft.com/powershell/feed/ (PowerShell Team Blog)
0 commit comments