Skip to content

Commit

Permalink
Feature landings (#611)
Browse files Browse the repository at this point in the history
* Add landing pages for each major feature

* Update main landing page
  • Loading branch information
StevenWeathers authored Sep 15, 2024
1 parent 879fc67 commit 13fb813
Show file tree
Hide file tree
Showing 50 changed files with 992 additions and 461 deletions.
21 changes: 1 addition & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,10 @@

💵 [Premium Options Available](https://thunderdome.dev/subscriptions/pricing)

## Remote team collaboration with agile story pointing, sprint retrospective, story mapping and async team check-in.
## Remote team collaboration with agile poker planning, sprint retrospectives, user story mapping and async team stand-ups (checkins).

![image](docs/img/main_preview.png)

## Streamline your team's agile stand-up with Team Checkins

Instead of spending time discussing what you did yesterday and what you're going to do today, focus on Blockers and
other more critical details.

![image](https://user-images.githubusercontent.com/846933/146627094-1f31a277-a454-4fd1-b707-ecb95559e9ad.png)

## Agile Sprint Retrospective

Realtime agile sprint retrospectives with grouping, voting, and action items.

![image](https://user-images.githubusercontent.com/846933/173260209-3ef3299f-f1b2-41e8-802f-17d40649c66d.png)

## Agile Feature Story Mapping

Realtime agile feature story mapping with goals, columns, stories and more!

![image](https://user-images.githubusercontent.com/846933/173260211-304a973d-4ede-494f-bb7d-b7e5c86a4e6e.png)

# Running in production

## Use latest docker image
Expand Down
Binary file modified docs/img/main_preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 2 additions & 6 deletions e2e/tests/admin/admin.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("Admin page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("Admin page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/alerts.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("The Admin Alerts Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("The Admin Alerts Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/apikeys.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("The Admin API Keys Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("The Admin API Keys Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/department.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@ test.describe("The Admin Department Page", () => {
);

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -42,9 +40,7 @@ test.describe("The Admin Department Page", () => {
);

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/organization.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("The Admin Organization Page", () => {
await adminPage.goto("bbaf82ef-a2d3-4e9a-b824-5e56a03ac3aa");

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("The Admin Organization Page", () => {
await adminPage.goto("bbaf82ef-a2d3-4e9a-b824-5e56a03ac3aa");

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/organizations.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("The Admin Organizations Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("The Admin Organizations Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/poker-games.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("The Admin Poker Games Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("The Admin Poker Games Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/team.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("The Admin Team Page", () => {
await adminPage.goto("bbaf82ef-a2d3-4e9a-b824-5e56a03ac3aa");

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("The Admin Team Page", () => {
await adminPage.goto("bbaf82ef-a2d3-4e9a-b824-5e56a03ac3aa");

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/teams.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("The Admin Teams Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("The Admin Teams Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
8 changes: 2 additions & 6 deletions e2e/tests/admin/users.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ test.describe("The Admin Users Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand All @@ -33,9 +31,7 @@ test.describe("The Admin Users Page", () => {
await adminPage.goto();

const title = adminPage.page.locator("h1");
await expect(title).toHaveText(
"Thunderdome is an Agile Planning Poker app",
);
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
});

Expand Down
2 changes: 1 addition & 1 deletion e2e/tests/landing.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ test.beforeEach(async ({ page }) => {

test("Landing Page", async ({ page }) => {
const title = page.locator("h1");
await expect(title).toHaveText("Thunderdome is an Agile Planning Poker app");
await expect(title).toHaveText("Thunderdome: Empower Your Agile Teams");
});
6 changes: 3 additions & 3 deletions e2e/tests/poker-games.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ const pageTitle = "My Games";

test.describe("Poker Games page", () => {
test.describe("Unauthenticated user", () => {
test("redirects to login", async ({ page }) => {
test("displays poker landing page", async ({ page }) => {
const battlesPage = new PokerGamesPage(page);
await battlesPage.goto();

const loginForm = battlesPage.page.locator('form[name="login"]');
await expect(loginForm).toBeVisible();
const title = battlesPage.page.locator("h1");
await expect(title).toHaveText("Agile Poker Planning with Thunderdome");
});
});

Expand Down
4 changes: 2 additions & 2 deletions e2e/tests/profile.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ test.describe("User Profile page", () => {

// should be on landing page and no longer authenticated
await expect(profilePage.page.locator("h1")).toHaveText(
"Thunderdome is an Agile Planning Poker app",
"Thunderdome: Empower Your Agile Teams",
);
await expect(
profilePage.page.locator("data-testid=usernav-name"),
Expand All @@ -383,7 +383,7 @@ test.describe("User Profile page", () => {

// should be on landing page and no longer authenticated
await expect(profilePage.page.locator("h1")).toHaveText(
"Thunderdome is an Agile Planning Poker app",
"Thunderdome: Empower Your Agile Teams",
);
await expect(
profilePage.page.locator("data-testid=usernav-name"),
Expand Down
6 changes: 3 additions & 3 deletions e2e/tests/retros.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ const pageTitle = "My Retros";

test.describe("Retros page", () => {
test.describe("Unauthenticated user", () => {
test("redirects to login", async ({ page }) => {
test("displays retrospective landing page", async ({ page }) => {
const retrosPage = new RetrosPage(page);
await retrosPage.goto();

const loginForm = retrosPage.page.locator('form[name="login"]');
await expect(loginForm).toBeVisible();
const title = retrosPage.page.locator("h1");
await expect(title).toHaveText("Sprint Retrospectives with Thunderdome");
});
});

Expand Down
6 changes: 3 additions & 3 deletions e2e/tests/storyboards.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ const pageTitle = "My Storyboards";

test.describe("Storyboards page", () => {
test.describe("Unauthenticated user", () => {
test("redirects to login", async ({ page }) => {
test("displays storyboard landing page", async ({ page }) => {
const storyboardsPage = new StoryboardsPage(page);
await storyboardsPage.goto();

const loginForm = storyboardsPage.page.locator('form[name="login"]');
await expect(loginForm).toBeVisible();
const title = storyboardsPage.page.locator("h1");
await expect(title).toHaveText("Story Mapping with Thunderdome");
});
});

Expand Down
Binary file added ui/public/img/previews/action_items.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/action_items_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/checkin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/checkin_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/estimation_scales.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/poker_game.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/poker_game_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/retro.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/retro_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/retro_template.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/retro_template_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/storyboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/storyboard_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/storyboard_story.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/storyboard_users.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/storyboard_users_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/voting_anon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/voting_anon_light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ui/public/img/previews/voting_interactive.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 7 additions & 4 deletions ui/src/App.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
import GlobalAlerts from './components/alert/GlobalAlerts.svelte';
import GlobalFooter from './components/global/GlobalFooter.svelte';
import Landing from './pages/Landing.svelte';
import Battles from './pages/poker/PokerGames.svelte';
import Battle from './pages/poker/PokerGame.svelte';
import Battles from './pages/poker/PokerGames.svelte';
import Retros from './pages/retro/Retros.svelte';
import Retro from './pages/retro/Retro.svelte';
import Storyboards from './pages/storyboard/Storyboards.svelte';
Expand Down Expand Up @@ -61,6 +61,9 @@
import Support from './pages/support/Support.svelte';
import { loadLocale } from './i18n/i18n-util.sync';
import Invite from './pages/team/Invite.svelte';
import RetroLanding from './pages/retro/RetroLanding.svelte';
import PokerLanding from './pages/poker/PokerLanding.svelte';
import StoryboardLanding from './pages/storyboard/StoryboardLanding.svelte';
const {
FeaturePoker,
Expand Down Expand Up @@ -415,7 +418,7 @@
});
router.on(appRoutes.games, () => {
currentPage = {
route: Battles,
route: $user.id ? Battles : PokerLanding,
params: {},
name: 'battles',
};
Expand Down Expand Up @@ -473,7 +476,7 @@
if (FeatureRetro) {
router.on(appRoutes.retros, () => {
currentPage = {
route: Retros,
route: $user.id ? Retros : RetroLanding,
params: {},
name: 'retros',
};
Expand Down Expand Up @@ -518,7 +521,7 @@
if (FeatureStoryboard) {
router.on(appRoutes.storyboards, () => {
currentPage = {
route: Storyboards,
route: $user.id ? Storyboards : StoryboardLanding,
params: {},
name: 'storyboards',
};
Expand Down
Loading

0 comments on commit 13fb813

Please sign in to comment.