summaryrefslogtreecommitdiff
path: root/README.md
blob: 341d8d5635d1c312a2522b0442d25673cdc93e5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# ✨ SparkleLab

**Sparkle your colleagues with praise.**
A low-stakes experiment with high-value learnings.

## What's SparkleLab?

SparkleLab is a lightweight service designed to explore modern access control models within GitLab, while doing something fun: helping GitLab team members show appreciation for each other.

We're using this as a **safe space for architectural experimentation**. By integrating with real systems and encouraging real usage, we can validate assumptions, uncover edge cases, and collect meaningful data - all while spreading positivity.

![Screenshot](./public/screenshot.png)

## Why SparkleLab?

The Authorization team is researching ways to evolve GitLab's authorization stack. We need a real, functioning service that:

- Integrates with GitLab
- Encourages real-world usage and feedback
- Lets us model and experiment with **RBAC**, **ABAC**, and **ReBAC**

## Key Use Cases

- **Machine-to-Machine** Integrates with Slack via a [slash command](https://api.slack.com/interactivity/slash-commands) to explore how external services can interact with GitLab-managed services.
- **User-to-User** Authenticates GitLab team members via our OIDC Identity Provider. We'll simulate different access control scenarios (RBAC, ABAC, ReBAC) by adding artificial constraints on who can send praise - even though in reality, *everyone can contribute*.

## Learn More

- [Authorization Design Doc](https://gitlab.com/gitlab-org/architecture/auth-architecture/design-doc)
- [Deployment Project](https://gitlab.com/gitlab-com/gl-infra/platform/runway/deployments/sparkle)
- [GitLab Handbook: Say Thanks](https://handbook.gitlab.com/handbook/communication/#say-thanks)
- [Runway Documentation](https://docs.runway.gitlab.com/runtimes/cloud-run/onboarding/)
- [Staging Environment](https://sparkle.staging.runway.gitlab.net)
- [Production Environment](https://sparkle.runway.gitlab.net)

## Getting Started

### Prerequisites

- [mise](https://mise.jdx.dev/)
- [make](https://www.gnu.org/software/make/)
- [docker](https://docs.docker.com/get-started/get-docker/)

1. Install tools:
  ```bash
  $ make setup
  ```
2. Run the tests:
  ```bash
  $ make test
  ```
4. Copy the `.env` file
  ```bash
  $ cp .env .env.local
  ```
5. Edit the settings in the `.env.local` file:
  ```bash
  $ vim .env.local
  ```
6. Start the service
  ```bash
  $ make run
  ```