Skip to content

General: Add marketing landing page for unauthenticated users#12287

Draft
bassner wants to merge 23 commits intodevelopfrom
feature/new-home
Draft

General: Add marketing landing page for unauthenticated users#12287
bassner wants to merge 23 commits intodevelopfrom
feature/new-home

Conversation

@bassner
Copy link
Member

@bassner bassner commented Mar 13, 2026

Summary

Adds a new marketing-style landing page for unauthenticated users visiting Artemis. Instead of showing a plain sign-in form, visitors now see a comprehensive product overview with a chaptered narrative showcasing Artemis's key capabilities across AI, assessment, and platform features.

Checklist

General

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data (e.g. using paging).
  • I strictly followed the client coding guidelines.
  • I strictly followed the AET UI-UX guidelines.
  • Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
  • I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.
  • I translated all newly inserted strings into English and German.

Motivation and Context

The existing landing experience for unauthenticated users is a basic sign-in page that provides no information about what Artemis is or what it offers. Universities considering Artemis, or students encountering it for the first time, have no way to understand the platform's capabilities without signing in.

This PR creates a marketing landing page that communicates Artemis's value proposition through a scroll-driven narrative organized into three chapters: AI features, assessment tools, and platform capabilities.

Description

New components:

  • LandingComponent — Page shell with scroll container
  • LandingHeroComponent — Hero section with tagline and trust strip of university logos
  • LandingNavbarComponent — Sticky navbar with Features/Documentation dropdowns and language switcher
  • LandingFeatureNarrativeComponent — Orchestrates the chaptered narrative with sticky side rail
  • LandingChapterIntroComponent — Reusable chapter heading with gradient text
  • LandingFeatureSectionComponent — Reusable feature section (narrative + deep-dive variants)
  • LandingCapabilityMatrixComponent — Compact "And More" section for additional features
  • LandingGlowbarComponent — Decorative separator between chapters
  • LandingCtaComponent — Call-to-action section
  • LandingFooterComponent — Footer with copyright and imprint link
  • LandingSupportStripComponent — University logo trust strip
  • VisibleOnScrollDirective — IntersectionObserver-based scroll reveal

Key technical details:

  • All components use Angular 21 signal APIs (signal(), viewChildren(), effect(), computed())
  • Scroll container is .page-wrapper, not window — all IntersectionObservers use this as root
  • Dual observer pattern: fire-and-forget reveals (directive) + persistent active tracking (component)
  • Sticky side rail with float positioning for desktop, hidden on mobile
  • Full i18n support (EN + DE) under landing.* namespace
  • Responsive design with mobile hamburger menu
  • prefers-reduced-motion support throughout

Steps for Testing

Prerequisites:

  • No login required
  1. Navigate to the Artemis root URL while not authenticated
  2. Verify the landing page loads with hero section and university logos
  3. Scroll down through all three chapters (AI, Assessment, Platform)
  4. Verify the sticky side rail highlights the current section
  5. Click rail items to jump to sections
  6. Test the Features dropdown in the navbar
  7. Test the Documentation dropdown links
  8. Switch language between EN and DE
  9. Test on mobile viewport (hamburger menu, no rail)
  10. Click "Sign In" to verify navigation to login

Testserver States

You can manage test servers using Helios.

Review Progress

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Screenshots

bassner added 15 commits March 4, 2026 18:17
Transplant the artemisapp.github.io landing page into the Angular app
as standalone components. Unauthenticated visitors now see a full
marketing page (hero, features, programming exercises, exams, CTA)
instead of the minimal login prompt.

- Add landing page components (hero, features, programming exercises,
  exams, CTA, footer, navbar, glowbar, visible-on-scroll directive)
- Route unauthenticated users to landing page, keep login at /login
- Add Inter Variable font via @fontsource-variable/inter
- Add i18n translations (en/de) for all landing page content
- Update auth guards and LTI components for new routing
# Conflicts:
#	package-lock.json
#	package.json
- Fix SAML2 post-login redirect to /sign-in instead of / (which is now
  the marketing landing page)
- Fix logout redirect to /sign-in so expired-session feedback is shown
- Fix image alt text to use translated strings via ArtemisTranslatePipe
- Change below-fold images to loading="lazy" for performance
- Add aria-label to mobile hamburger menu button
- Fix LTI subscription leaks with filter(Boolean) + take(1)
- Switch canMatch to canActivate for authenticated user redirect to /courses
- Center navbar links on screen using absolute positioning
- Replace incorrect pytest, JUnit5, and Java SVG icons with correct Simple Icons versions
- Set black body background and transparent page-wrapper to prevent white flash on landing page load
…avbar

- Add PrimeNG popup menu with links to Student, Instructor, Admin, and Developer docs
- Add EN/DE language toggle left of the Sign In button
- Add documentation links to mobile menu
- Rename nav-link class to landing-link to avoid Bootstrap collision
- Replace anchor links with smooth scrollIntoView navigation
- Replace <a> tags with <span>/<button> to avoid Bootstrap hover styles
- Add scroll-to-top on logo click
- Fix footer bottom margin causing black gap
Replace the three separate feature sections (Features grid,
Programming Exercises, Exams) with a single LandingFeatureShowcaseComponent
that presents 7 primary features in a scroll-driven narrative with a
sticky side navigation rail, scroll-triggered reveal animations, and
active section tracking via IntersectionObserver.

Tier 3 features (plagiarism detection, modeling, quizzes, etc.) appear
in a compact grid below the main sequence. The navbar is simplified
to Features + Documentation. All content is fully localized (EN/DE).
…ture

Split the single LandingFeatureShowcaseComponent into a multi-component
chaptered layout with 3 chapters (AI, Assessment, Platform), 11 feature
sections, a sticky contents rail, and reusable chapter intro/section
components. Fix active section tracking by using { read: ElementRef }
on viewChildren query.
@bassner bassner added this to the 9.0.0 milestone Mar 13, 2026
@github-project-automation github-project-automation bot moved this to Work In Progress in Artemis Development Mar 13, 2026
@github-actions github-actions bot added tests server Pull requests that update Java code. (Added Automatically!) client Pull requests that update TypeScript code. (Added Automatically!) documentation config-change Pull requests that change the config in a way that they require a deployment via Ansible. playwright assessment Pull requests that affect the corresponding module athena Pull requests that affect the corresponding module buildagent Pull requests that affect the corresponding module core Pull requests that affect the corresponding module labels Mar 13, 2026
@github-actions github-actions bot added lti Pull requests that affect the corresponding module modeling Pull requests that affect the corresponding module programming Pull requests that affect the corresponding module quiz Pull requests that affect the corresponding module text Pull requests that affect the corresponding module tutorialgroup Pull requests that affect the corresponding module hyperion labels Mar 13, 2026
bassner added 2 commits March 13, 2026 16:24
- Add missing imageAlt i18n keys for quiz, modeling, lectures,
  communication, and integrity sections (EN + DE)
- Change nav-brand and mobile menu spans to buttons for keyboard a11y
- Convert menu item getters to computed() signals for reactivity
- Remove double inject(TranslateService) in navbar
- Query prefers-reduced-motion inline instead of at construction time
@bassner bassner changed the base branch from main to develop March 16, 2026 08:33
@github-actions github-actions bot removed documentation config-change Pull requests that change the config in a way that they require a deployment via Ansible. assessment Pull requests that affect the corresponding module athena Pull requests that affect the corresponding module buildagent Pull requests that affect the corresponding module exam Pull requests that affect the corresponding module exercise Pull requests that affect the corresponding module fileupload Pull requests that affect the corresponding module modeling Pull requests that affect the corresponding module programming Pull requests that affect the corresponding module quiz Pull requests that affect the corresponding module text Pull requests that affect the corresponding module tutorialgroup Pull requests that affect the corresponding module hyperion labels Mar 16, 2026
bassner added 2 commits March 16, 2026 11:40
- Convert glowColor getter to computed signal for consistency
- Add type="button" to mobile sign-in button
- Add rel="noreferrer" to all external links
- Add prefers-reduced-motion support to hero and CTA components
- Internationalize hero screenshot alt text
Resolve conflict in global.scss: keep both chat-history tooltip
(from develop) and landing page dropdown styles (from PR).
@github-actions
Copy link

github-actions bot commented Mar 19, 2026

End-to-End Test Results

Phase Status Details
Phase 1 (Relevant) ✅ Passed
TestsPassed ✅SkippedFailedTime ⏱
Phase 1: E2E Test Report22 ran22 passed0 skipped0 failed3m 5s
Phase 2 (Remaining) ⏭ Skipped

Test Strategy: Two-phase execution

  • Phase 1: e2e/Login.spec.ts e2e/Logout.spec.ts e2e/SystemHealth.spec.ts e2e/course/CourseManagement.spec.ts
  • Phase 2: e2e/atlas/ e2e/course/CourseChannelMessages.spec.ts e2e/course/CourseExercise.spec.ts e2e/course/CourseGroupChatMessages.spec.ts e2e/exam/ExamAssessment.spec.ts e2e/exam/ExamChecklists.spec.ts e2e/exam/ExamCreationDeletion.spec.ts e2e/exam/ExamDateVerification.spec.ts e2e/exam/ExamManagement.spec.ts e2e/exam/ExamParticipation.spec.ts e2e/exam/ExamResults.spec.ts e2e/exam/ExamTestRun.spec.ts e2e/exam/test-exam/ e2e/exercise/ExerciseImport.spec.ts e2e/exercise/file-upload/ e2e/exercise/modeling/ e2e/exercise/programming/ e2e/exercise/quiz-exercise/ e2e/exercise/text/ e2e/lecture/

Overall: ❌ Phase 2 (remaining tests) failed

🔗 Workflow Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client Pull requests that update TypeScript code. (Added Automatically!) core Pull requests that affect the corresponding module lti Pull requests that affect the corresponding module playwright server Pull requests that update Java code. (Added Automatically!) tests

Projects

Status: Work In Progress

Development

Successfully merging this pull request may close these issues.

1 participant