Skip to content

Commit c7f388e

Browse files
committed
Initialize engineering judgement workshop scaffold.
Customize workshop metadata and docs, refresh dependencies, and prepare the repository for exercise authoring. Made-with: Cursor
0 parents  commit c7f388e

54 files changed

Lines changed: 22678 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/validate.yml

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: deploy
2+
3+
concurrency:
4+
group: ${{ github.workflow }}-${{ github.ref }}
5+
cancel-in-progress: true
6+
7+
on:
8+
push:
9+
branches:
10+
- 'main'
11+
pull_request: {}
12+
13+
jobs:
14+
setup:
15+
name: 🔧 Setup
16+
timeout-minutes: 10
17+
strategy:
18+
matrix:
19+
os: [ubuntu-latest, windows-latest, macos-latest]
20+
runs-on: ${{ matrix.os }}
21+
steps:
22+
- name: ⎔ Setup node
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: 24
26+
27+
- name: ▶️ Add repo
28+
run: |
29+
npx --yes epicshop@latest add ${{ github.event.repository.name }}#${{ github.head_ref || github.ref_name }} ./workshop
30+
env:
31+
# Kept getting npm ECOMPROMISED errors on windows. This fixed it.
32+
npm_config_cache: ${{ runner.temp }}/npm-cache
33+
34+
- name: ʦ TypeScript
35+
run: npm run typecheck
36+
working-directory: ./workshop
37+
38+
- name: ⬣ Oxlint
39+
run: npm run lint
40+
working-directory: ./workshop
41+
42+
tests:
43+
name: 🧪 Test
44+
timeout-minutes: 10
45+
runs-on: ubuntu-latest
46+
# Use continue-on-error to ensure this job doesn't fail the workflow
47+
continue-on-error: true
48+
49+
steps:
50+
- name: ⬇️ Checkout repo
51+
uses: actions/checkout@v4
52+
53+
- name: ⎔ Setup node
54+
uses: actions/setup-node@v4
55+
with:
56+
node-version: 24
57+
58+
- name: 📦 Install dependencies
59+
run: npm ci
60+
61+
- name: 🧪 Run tests
62+
id: run_tests
63+
run: node ./epicshop/test.ts ..s
64+
65+
deploy:
66+
name: 🚀 Deploy
67+
timeout-minutes: 10
68+
runs-on: ubuntu-latest
69+
# only deploy main branch on pushes on non-forks
70+
if:
71+
${{ github.ref == 'refs/heads/main' && github.event_name == 'push' &&
72+
github.repository_owner == 'epicweb-dev' }}
73+
74+
steps:
75+
- name: ⬇️ Checkout repo
76+
uses: actions/checkout@v4
77+
78+
- name: 🎈 Setup Fly
79+
uses: superfly/flyctl-actions/setup-flyctl@1.5
80+
81+
- name: 🚀 Deploy
82+
run:
83+
flyctl deploy --remote-only --build-arg
84+
EPICSHOP_GITHUB_REPO=https://github.com/${{ github.repository }}
85+
--build-arg EPICSHOP_COMMIT_SHA=${{ github.sha }}
86+
working-directory: ./epicshop
87+
env:
88+
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}

.gitignore

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
node_modules
2+
3+
# non-npm JavaScript lockfiles
4+
yarn.lock
5+
pnpm-lock.yaml
6+
bun.lock
7+
bun.lockb
8+
9+
workspace/
10+
**/.cache/
11+
**/build/
12+
**/public/build
13+
**/playwright-report
14+
data.db
15+
/playground
16+
**/*.tsbuildinfo
17+
**/dist
18+
19+
# in a real app you'd want to not commit the .env
20+
# file as well, but since this is for a workshop
21+
# we're going to keep them around.
22+
# .env
23+
24+
# ignored stuff
25+
*.ignored.*
26+
*.ignored/
27+
# ignored stuff
28+
*.local.*
29+
*.local/
30+
31+
saved-playgrounds

.npmrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
legacy-peer-deps=true
2+
registry=https://registry.npmjs.org/

.oxlintrc.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"extends": ["./node_modules/@epic-web/config/oxlint-config.json"],
3+
"rules": {
4+
"eslint/no-unused-vars": "off"
5+
}
6+
}

.prettierignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
**/node_modules/**
2+
**/.cache/**
3+
**/build/**
4+
**/dist/**
5+
**/public/build/**
6+
**/package-lock.json
7+
**/playwright-report/**

AGENTS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
It's not your typical project.
2+
3+
This project is an Epic Workshop implementation. Check [./instructor/README.md](./instructor/README.md) for more details.

LICENSE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
This material is available for private, non-commercial use under the
2+
[GPL version 3](http://www.gnu.org/licenses/gpl-3.0-standalone.html). If you
3+
would like to use this material to conduct your own workshop, please contact us
4+
at team@epicweb.dev

README.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
<div>
2+
<h1 align="center"><a href="https://www.epicweb.dev/workshops">Engineering Judgement Workshop</a></h1>
3+
<strong>
4+
Practice making better technical decisions under ambiguity
5+
</strong>
6+
<p>
7+
Learn a repeatable framework for clarifying requirements, surfacing assumptions, evaluating trade-offs, and validating outcomes in real-world engineering work.
8+
</p>
9+
</div>
10+
11+
<hr />
12+
13+
<div align="center">
14+
<a
15+
alt="Epic Web logo with the words Deployed Version"
16+
href="https://epicweb-dev-engineering-judgement.fly.dev/"
17+
>
18+
<img
19+
width="300px"
20+
src="https://github-production-user-asset-6210df.s3.amazonaws.com/1500684/254000390-447a3559-e7b9-4918-947a-1b326d239771.png"
21+
/>
22+
</a>
23+
</div>
24+
25+
<hr />
26+
27+
<!-- prettier-ignore-start -->
28+
[![Build Status][build-badge]][build]
29+
[![GPL 3.0 License][license-badge]][license]
30+
[![Code of Conduct][coc-badge]][coc]
31+
<!-- prettier-ignore-end -->
32+
33+
## Prerequisites
34+
35+
- Working JavaScript and TypeScript experience
36+
- Basic experience with React-style full stack web applications
37+
- Familiarity with using AI coding assistants (or willingness to learn as you go)
38+
- Comfort discussing trade-offs and documenting assumptions
39+
40+
## Pre-workshop Resources
41+
42+
Here are some resources you can read before taking the workshop to get you up to
43+
speed on some of the tools and concepts we'll be covering:
44+
45+
- [How to Think Like an Engineer](https://kentcdodds.com/blog)
46+
- [Epic Web Getting Started Guide](https://www.epicweb.dev/get-started)
47+
- [The Pragmatic Engineer Newsletter](https://newsletter.pragmaticengineer.com/)
48+
49+
## System Requirements
50+
51+
- [git][git] v2.18 or greater
52+
- [NodeJS][node] v18 or greater
53+
- [npm][npm] v8 or greater
54+
55+
All of these must be available in your `PATH`. To verify things are set up
56+
properly, you can run this:
57+
58+
```shell
59+
git --version
60+
node --version
61+
npm --version
62+
```
63+
64+
If you have trouble with any of these, learn more about the PATH environment
65+
variable and how to fix it here for [windows][win-path] or
66+
[mac/linux][mac-path].
67+
68+
## Setup
69+
70+
Use the Epic Workshop CLI to get this setup:
71+
72+
```sh nonumber
73+
npx --yes epicshop@latest add engineering-judgement
74+
```
75+
76+
If you experience errors here, please open [an issue][issue] with as many
77+
details as you can offer.
78+
79+
## The Workshop App
80+
81+
Learn all about the workshop app on the
82+
[Epic Web Getting Started Guide](https://www.epicweb.dev/get-started).
83+
84+
Make sure to complete
85+
[the Epic Workshop app Tutorial](https://github.com/epicweb-dev/epicshop-tutorial):
86+
87+
```
88+
npx --yes epicshop@latest add epicshop-tutorial
89+
```
90+
91+
<!-- prettier-ignore-start -->
92+
[npm]: https://www.npmjs.com/
93+
[node]: https://nodejs.org
94+
[git]: https://git-scm.com/
95+
[build-badge]: https://img.shields.io/github/actions/workflow/status/epicweb-dev/engineering-judgement/validate.yml?branch=main&logo=github&style=flat-square
96+
[build]: https://github.com/epicweb-dev/engineering-judgement/actions?query=workflow%3Avalidate
97+
[license-badge]: https://img.shields.io/badge/license-GPL%203.0%20License-blue.svg?style=flat-square
98+
[license]: https://github.com/epicweb-dev/engineering-judgement/blob/main/LICENSE
99+
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
100+
[coc]: https://kentcdodds.com/conduct
101+
[win-path]: https://www.howtogeek.com/118594/how-to-edit-your-system-path-for-easy-command-line-access/
102+
[mac-path]: http://stackoverflow.com/a/24322978/971592
103+
[issue]: https://github.com/epicweb-dev/engineering-judgement/issues/new
104+
<!-- prettier-ignore-end -->

epicshop/.npmrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
legacy-peer-deps=true
2+
registry=https://registry.npmjs.org/

epicshop/Dockerfile

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
FROM node:24-bookworm-slim as base
2+
3+
RUN apt-get update && apt-get install -y git
4+
5+
# Build argument for GitHub repo URL
6+
ARG EPICSHOP_GITHUB_REPO
7+
ENV EPICSHOP_GITHUB_REPO=${EPICSHOP_GITHUB_REPO}
8+
9+
ENV EPICSHOP_CONTEXT_CWD="/myapp/workshop-content"
10+
ENV EPICSHOP_HOME_DIR="/myapp/.epicshop"
11+
ENV EPICSHOP_DEPLOYED="true"
12+
ENV EPICSHOP_DISABLE_WATCHER="true"
13+
ENV FLY="true"
14+
ENV PORT="8080"
15+
ENV NODE_ENV="production"
16+
17+
# Build argument for commit SHA to bust cache when repo changes
18+
ARG EPICSHOP_COMMIT_SHA
19+
ENV EPICSHOP_COMMIT_SHA=${EPICSHOP_COMMIT_SHA}
20+
21+
WORKDIR /myapp
22+
23+
# Clone the workshop repo during build time, excluding database files
24+
# Clone specific commit to keep image small while ensuring cache busting
25+
RUN git init ${EPICSHOP_CONTEXT_CWD} && \
26+
cd ${EPICSHOP_CONTEXT_CWD} && \
27+
git remote add origin ${EPICSHOP_GITHUB_REPO} && \
28+
git fetch --depth 1 origin ${EPICSHOP_COMMIT_SHA} && \
29+
git checkout ${EPICSHOP_COMMIT_SHA}
30+
31+
ADD . .
32+
33+
RUN npm install --omit=dev
34+
35+
RUN cd ${EPICSHOP_CONTEXT_CWD} && \
36+
npx epicshop warm
37+
38+
CMD cd ${EPICSHOP_CONTEXT_CWD} && \
39+
npx epicshop start

0 commit comments

Comments
 (0)