Skip to content

Commit 2e4336a

Browse files
feat(webapp): strengthen public landing experience
1 parent c6435a4 commit 2e4336a

61 files changed

Lines changed: 1666 additions & 1779 deletions

File tree

Some content is hidden

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

.changeset/calm-mentors-welcome.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"hephaestus": patch
3+
---
4+
5+
Clarifies how Hephaestus connects practice feedback and conversations with Heph to project work, and adds institutional attribution to the public pages.

.github/actions/setup-caches/action.yml

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: "Setup CI caches"
2-
description: "Caches Maven repo + generated sources, Playwright browsers, and Storybook builds. Node/pnpm setup happens in the calling workflow via pnpm/action-setup + actions/setup-node (cache: pnpm)."
2+
description: "Caches Maven dependencies and Playwright browsers. Node/pnpm setup happens in the calling workflow."
33
inputs:
44
cache-type:
55
description: "Type of cache to setup"
@@ -43,14 +43,3 @@ runs:
4343
key: ${{ inputs.os }}-playwright-${{ hashFiles('pnpm-lock.yaml') }}
4444
restore-keys: |
4545
${{ inputs.os }}-playwright-
46-
47-
- name: Cache Storybook build
48-
if: contains(fromJSON('["webapp-visual", "webapp-storybook"]'), inputs.cache-type)
49-
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
50-
with:
51-
path: |
52-
webapp/storybook-static
53-
webapp/.storybook/.cache
54-
key: ${{ inputs.os }}-storybook-${{ hashFiles('webapp/**/*.stories.tsx', 'webapp/.storybook/**', 'pnpm-lock.yaml') }}
55-
restore-keys: |
56-
${{ inputs.os }}-storybook-

.github/workflows/ci-tests.yml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ on:
88
required: false
99
type: string
1010
default: "false"
11-
# Path-based change detection for selective test execution
1211
webapp_changed:
1312
description: "Whether webapp files changed"
1413
required: false
@@ -63,7 +62,6 @@ jobs:
6362
echo "run=${{ inputs.application_server_changed }}" >> $GITHUB_OUTPUT
6463
;;
6564
*)
66-
# Unknown test type - fail explicitly to catch missing case statements
6765
echo "::error::Unknown test type '${{ matrix.test-type }}' in ci-tests.yml matrix."
6866
echo "::error::Please add a case for this test type in the 'Determine if test should run' step."
6967
echo "run=false" >> $GITHUB_OUTPUT
@@ -116,7 +114,6 @@ jobs:
116114
117115
case "${{ matrix.test-type }}" in
118116
"webapp-storybook")
119-
# Install Playwright browsers (cached in ~/.cache/ms-playwright by setup-caches)
120117
pnpm exec playwright install chromium --with-deps
121118
# Bound browser-runner deadlocks without coupling CI to the current suite duration.
122119
timeout --kill-after=30s 15m pnpm run test:storybook
@@ -174,7 +171,6 @@ jobs:
174171
if-no-files-found: ignore
175172
retention-days: 14
176173

177-
# Chromatic visual testing
178174
- name: "Chromatic Visual Testing"
179175
if: >-
180176
steps.should_run.outputs.run == 'true' && matrix.test-type == 'webapp-storybook' && always() &&
@@ -211,7 +207,6 @@ jobs:
211207
context: 'Preview / Storybook'
212208
});
213209
214-
# Test result aggregation
215210
- name: Upload application-server test results
216211
if: steps.should_run.outputs.run == 'true' && always() && startsWith(matrix.test-type, 'application-server-')
217212
uses: dorny/test-reporter@a43b3a5f7366b97d083190328d2c652e1a8b6aa2 # v3.0.0
@@ -261,14 +256,12 @@ jobs:
261256
exit 1
262257
fi
263258
264-
# Test Summary for Job Summary
265259
- name: Generate test summary
266260
if: steps.should_run.outputs.run == 'true' && always()
267261
run: |
268262
echo "### 🧪 ${{ matrix.test-type }}" >> $GITHUB_STEP_SUMMARY
269263
echo "" >> $GITHUB_STEP_SUMMARY
270264
271-
# Find and summarize JUnit XML results
272265
case "${{ matrix.test-type }}" in
273266
application-server-*)
274267
if [ -d "server/target/surefire-reports" ]; then

README.md

Lines changed: 25 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
</picture>
77

88
<h1>Hephaestus</h1>
9-
<p><strong>Feedback on how you work</strong></p>
9+
<p><strong>Learn from the work you're already doing</strong></p>
1010

1111
<p>
1212
<a href="https://hephaestus.aet.cit.tum.de"><img alt="Open the TUM-operated Hephaestus web app" src="https://img.shields.io/badge/web_app-open-493C83"></a>
@@ -21,65 +21,49 @@
2121
</p>
2222
</div>
2323

24-
Hephaestus gives developers feedback on the engineering practices they use in software projects. It draws on evidence from tools the team already uses — including GitHub or GitLab activity, selected Slack channels, and Outline documents — to explain what worked, what could improve, and what to try next.
24+
Hephaestus reviews how developers plan, explain, and deliver changes in GitHub or GitLab. Each suggestion links back to the work and shows what to address next. Ask Heph why it matters or add context the review did not have.
2525

2626
<div align="center">
2727
<picture>
28-
<source media="(max-width: 520px) and (prefers-color-scheme: dark)" srcset="./docs/images/readme/landing-feedback-preview-mobile-dark.png">
29-
<source media="(max-width: 520px) and (prefers-color-scheme: light)" srcset="./docs/images/readme/landing-feedback-preview-mobile-light.png">
30-
<source media="(prefers-color-scheme: dark)" srcset="./docs/images/readme/landing-feedback-preview-dark.png">
31-
<source media="(prefers-color-scheme: light)" srcset="./docs/images/readme/landing-feedback-preview-light.png">
32-
<img alt="Example practice feedback on a focused change: Hephaestus notes that the change is easy to review and suggests explaining why it matters; the developer asks what to write, and Heph suggests a concise sentence." src="./docs/images/readme/landing-feedback-preview-light.png" width="744">
28+
<source media="(prefers-color-scheme: dark)" srcset="./docs/images/readme/landing-hero-dark.png">
29+
<source media="(prefers-color-scheme: light)" srcset="./docs/images/readme/landing-hero-light.png">
30+
<img alt="A bulk-archive change shown with an unanswered product decision, review feedback, and a question from Heph." src="./docs/images/readme/landing-hero-light.png" width="1224">
3331
</picture>
34-
<p><sub>One example of practice feedback and a follow-up with Heph.</sub></p>
3532
</div>
3633

37-
Hephaestus is built for software engineering courses, open-source projects, and teams where mentors and maintainers cannot review every contribution themselves.
34+
It is built for software engineering courses, open-source projects, and engineering teams that want feedback to stay close to the work that prompted it.
3835

3936
## What Hephaestus does
4037

41-
- **Practice feedback.** Hephaestus uses AI to review pull requests, merge requests, and issues against the engineering practices configured for a workspace. It can post the feedback as comments on the work.
42-
- **Heph, the AI mentor.** Developers can talk with Heph about feedback and recent issues, commits, reviews, and pull or merge requests. Heph is available in the web app and, when connected, in Slack.
43-
- **Project context.** Workspace admins can let Hephaestus use messages from selected, visibly monitored Slack channels and documents from selected Outline collections. Outline is a source of context; Hephaestus does not write to it.
44-
- **Workspaces.** Each workspace connects its own repositories, chooses its practice catalog, connects an AI model through any OpenAI-compatible endpoint, sets a monthly spending cap, and manages its members and teams.
45-
- **Optional recognition.** Workspace admins can enable achievements, leagues, a weekly leaderboard, and Slack digests of review activity.
38+
- **Connects feedback to the work.** Hephaestus reviews pull requests, merge requests, and issues against the practices configured for a workspace and points back to relevant evidence.
39+
- **Continues the conversation with Heph.** Developers can ask why a suggestion matters or explain context the review missed in the web app or Slack.
40+
- **Uses connected project context.** GitHub, GitLab, Slack, and Outline integrations provide repository activity, team conversations, and documentation.
41+
- **Keeps workspaces in control.** Admins configure repositories, practices, AI models, budgets, members, and integrations.
4642

4743
## How feedback works
4844

49-
The loop starts with a developer's project work and the context around it. Hephaestus reviews the work against the engineering practices configured for the workspace, turns what it finds into feedback, and delivers that feedback where it can help.
45+
1. A workspace connects its GitHub or GitLab repositories and chooses the engineering practices it cares about.
46+
2. Hephaestus reviews relevant pull requests, merge requests, and issues for evidence of those practices.
47+
3. Hephaestus can deliver feedback alongside the contribution and in the web app, with the evidence behind it.
48+
4. Developers can ask Heph about the suggestion or explain context the review missed.
5049

51-
<picture>
52-
<source media="(max-width: 640px) and (prefers-color-scheme: dark)" srcset="./docs/images/readme/feedback-loop-mobile-dark.png">
53-
<source media="(max-width: 640px) and (prefers-color-scheme: light)" srcset="./docs/images/readme/feedback-loop-mobile-light.png">
54-
<source media="(max-width: 1024px) and (prefers-color-scheme: dark)" srcset="./docs/images/readme/feedback-loop-tablet-dark.png">
55-
<source media="(max-width: 1024px) and (prefers-color-scheme: light)" srcset="./docs/images/readme/feedback-loop-tablet-light.png">
56-
<source media="(prefers-color-scheme: dark)" srcset="./docs/images/readme/feedback-loop-dark.png">
57-
<source media="(prefers-color-scheme: light)" srcset="./docs/images/readme/feedback-loop-light.png">
58-
<img alt="Hephaestus feedback loop: project work and context are reviewed against workspace practices; practice feedback explains what worked, what could improve, and what to try next; it can appear alongside the work or in conversation with Heph; the developer decides whether to use, question, or skip it before their next piece of project work." src="./docs/images/readme/feedback-loop-light.png" width="1224">
59-
</picture>
50+
Developers decide whether the feedback fits their work.
6051

61-
Developers decide what helps: use the feedback, question it, or skip it. The cycle continues with their next piece of project work. Hephaestus supports mentors, teachers, and maintainers by covering routine feedback. It does not replace their judgement or the relationships they build with developers.
52+
## Project origins
6253

63-
## Project status
54+
Hephaestus is an [MIT-licensed](./LICENSE) open-source project developed by [Applied Education Technologies](https://aet.cit.tum.de/) at the [Technical University of Munich](https://www.tum.de/en/). It is named after the Greek god of blacksmiths and craftspeople.
55+
56+
## Before upgrading
6457

6558
> [!IMPORTANT]
66-
> **Hephaestus is still pre-1.0.** Until 1.0, a minor release can change configuration or APIs in ways that require action. If you self-host it, use the [latest release](https://github.com/ls1intum/Hephaestus/releases/latest), read its release notes and the [migration guide](./MIGRATION.md), and test upgrades in staging.
67-
>
68-
> We are aiming for a stable **v1.0.0 in mid-September 2026**. Here, stable means [predictable rules](./docs/admin/compatibility-policy.mdx) for upgrades, configuration, Docker Compose, and the REST API — not that development stops.
69-
>
70-
> Parts of this model already ship. For v1.0, the goal is to support them together as a stable product:
71-
>
72-
> - **Project context:** work in GitHub and GitLab, selected Slack channels, and selected Outline documents.
73-
> - **Feedback delivery:** alongside work in GitHub or GitLab, in a personal view across projects, and in conversation with Heph in the web app or Slack.
74-
>
75-
> Release gates take priority over the date. Follow the [v1.0 milestone](https://github.com/ls1intum/Hephaestus/milestone/5) and [release plan](https://github.com/ls1intum/Hephaestus/issues/1377) for current scope and progress.
59+
> Before upgrading a self-hosted deployment, read the [release notes](https://github.com/ls1intum/Hephaestus/releases/latest), [compatibility policy](./docs/admin/compatibility-policy.mdx), and [migration guide](./MIGRATION.md), then test the upgrade in staging.
7660
7761
## Get started
7862

79-
- **TUM deployment:** [open the web app](https://hephaestus.aet.cit.tum.de).
80-
- **Documentation:** read the [user, administrator, and contributor guides](https://ls1intum.github.io/Hephaestus/).
81-
- **Self-hosting:** follow the [install guide](https://ls1intum.github.io/Hephaestus/admin/install) ([INSTALL.md](INSTALL.md)) for the supported Docker Compose path.
82-
- **Development:** use the [local development guide](https://ls1intum.github.io/Hephaestus/contributor/local-development), and explore the web interface in [Storybook](https://main--66a8981a27ced8fef3190d41.chromatic.com/).
63+
- **Open the hosted app:** visit the [TUM deployment](https://hephaestus.aet.cit.tum.de).
64+
- **Learn how it works:** read the [user guide](https://ls1intum.github.io/Hephaestus/user/overview).
65+
- **Run your own deployment:** follow the [self-hosting guide](https://ls1intum.github.io/Hephaestus/admin/install) or start with [INSTALL.md](INSTALL.md).
66+
- **Contribute:** use the [local development guide](https://ls1intum.github.io/Hephaestus/contributor/local-development) and explore the interface in [Storybook](https://main--66a8981a27ced8fef3190d41.chromatic.com/).
8367

8468
## Get help
8569

@@ -89,8 +73,4 @@ Developers decide what helps: use the feedback, question it, or skip it. The cyc
8973

9074
## Contributing
9175

92-
Contributions are welcome. Before you start, read [CONTRIBUTING.md](./CONTRIBUTING.md) and the [Code of Conduct](./CODE_OF_CONDUCT.md). They cover the development workflow, pull request requirements, community expectations, and the project's identity requirements for contributors.
93-
94-
The project follows a pull request contribution model and GitHub's [Acceptable Use Policies](https://docs.github.com/en/site-policy/acceptable-use-policies).
95-
96-
The project is named after Hephaestus, the Greek god of blacksmiths and craftsmen.
76+
Contributions are welcome. [CONTRIBUTING.md](./CONTRIBUTING.md) explains how to set up the project, propose a change, run the quality checks, and open a pull request. Participation in the project is governed by the [Code of Conduct](./CODE_OF_CONDUCT.md).

docs/docusaurus.config.ts

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,15 @@ import {themes as prismThemes} from 'prism-react-renderer';
22
import type {Config} from '@docusaurus/types';
33
import type * as Preset from '@docusaurus/preset-classic';
44

5-
// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
6-
75
const envBaseUrl = process.env.DOCUSAURUS_BASE_URL;
86

97
const config: Config = {
108
title: 'Hephaestus Documentation',
11-
tagline: 'Feedback on how you work',
9+
tagline: "Learn from the work you're already doing",
1210
favicon: 'img/favicon.ico',
1311

14-
// Future flags and performance optimizations
15-
// See https://docusaurus.io/docs/api/docusaurus-config#future
1612
future: {
1713
v4: true,
18-
// Docusaurus Faster: Uses Rspack, SWC, and LightningCSS for 2-4x faster builds
19-
// https://docusaurus.io/blog/releases/3.6#docusaurus-faster
2014
faster: {
2115
swcJsLoader: true,
2216
swcJsMinimizer: true,
@@ -39,9 +33,6 @@ const config: Config = {
3933
onDuplicateRoutes: 'throw',
4034
trailingSlash: false,
4135

42-
// Even if you don't use internationalization, you can use this field to set
43-
// useful metadata like html lang. For example, if your site is Chinese, you
44-
// may want to replace "en" with "zh-Hans".
4536
i18n: {
4637
defaultLocale: 'en',
4738
locales: ['en'],
@@ -71,15 +62,12 @@ const config: Config = {
7162
theme: {
7263
customCss: './src/css/custom.css',
7364
},
74-
// Sitemap generation with lastmod for SEO
7565
sitemap: {
7666
lastmod: 'datetime',
7767
changefreq: 'weekly',
7868
priority: 0.5,
7969
filename: 'sitemap.xml',
8070
},
81-
// Google Tag Manager can be configured here if needed
82-
// gtag: { trackingID: 'G-XXXXXXXXXX' },
8371
} satisfies Preset.Options,
8472
],
8573
],
@@ -152,7 +140,7 @@ const config: Config = {
152140
{
153141
name: 'description',
154142
content:
155-
'Hephaestus gives developers practice feedback on software project work, plus an AI mentor for talking through feedback and next steps.',
143+
'Hephaestus gives developers practice feedback on software project work and lets them discuss it with Heph, its conversational AI mentor.',
156144
},
157145
{name: 'keywords', content: 'Hephaestus, AI mentor, code review feedback, software engineering practices, TUM'},
158146
{name: 'twitter:card', content: 'summary_large_image'},
@@ -161,7 +149,7 @@ const config: Config = {
161149
{
162150
name: 'twitter:description',
163151
content:
164-
'Hephaestus gives developers practice feedback on software project work, plus an AI mentor for talking through feedback and next steps.',
152+
'Hephaestus gives developers practice feedback on software project work and lets them discuss it with Heph, its conversational AI mentor.',
165153
},
166154
],
167155
navbar: {
@@ -252,7 +240,7 @@ const config: Config = {
252240
],
253241
},
254242
{
255-
title: 'Community',
243+
title: 'Project',
256244
items: [
257245
{
258246
label: 'Applied Education Technologies',
@@ -265,15 +253,14 @@ const config: Config = {
265253
],
266254
},
267255
],
268-
copyright: `© ${new Date().getFullYear()} Technical University of Munich · Built with ❤️ by the Hephaestus Team at Applied Education Technologies (AET)`,
256+
copyright: `Hephaestus is an MIT-licensed open-source project developed by Applied Education Technologies at the Technical University of Munich.`,
269257
},
270258
docs: {
271259
sidebar: {
272260
hideable: true,
273261
autoCollapseCategories: true,
274262
},
275263
},
276-
// Table of contents configuration
277264
tableOfContents: {
278265
minHeadingLevel: 2,
279266
maxHeadingLevel: 4,
-251 KB
Binary file not shown.
-257 KB
Binary file not shown.
-209 KB
Binary file not shown.
-200 KB
Binary file not shown.
-209 KB
Binary file not shown.

0 commit comments

Comments
 (0)