Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
7848cd0
feat: initial commit
pauldps Nov 16, 2025
20eeb28
Shadcn install
pauldps Nov 16, 2025
cbdb184
Main layout skeleton
pauldps Nov 17, 2025
685c6d3
Font and styling
pauldps Nov 17, 2025
f07fe4e
Dynamic title prep
pauldps Nov 17, 2025
23ceabc
Styling and components
pauldps Nov 17, 2025
e5ffbae
login screen components
pauldps Nov 17, 2025
1e55937
VueRouter setup
pauldps Nov 17, 2025
532bcf4
Placeholder login form
pauldps Nov 18, 2025
73076e1
Add name attributes to input fields in LoginView
pauldps Nov 18, 2025
e1fa3ce
More placeholder views and routes
pauldps Nov 18, 2025
db40261
Add Sign-Up View with form fields and layout
pauldps Nov 18, 2025
6958be7
Navbar upgrades, WIP
pauldps Nov 18, 2025
2bcaf6e
Integrate Pinia for session management and update LoginView for authe…
pauldps Nov 19, 2025
8a017bd
Make LoginView password-manager-friendly
pauldps Nov 19, 2025
7079a9a
Renames: session store -> auth store; Signup -> Register
pauldps Nov 19, 2025
fa28440
Implement registration logic in RegisterView and update auth store fo…
pauldps Nov 19, 2025
deea887
LoginSuccessView placeholder
pauldps Nov 20, 2025
d5d893d
Opencode setup
pauldps Nov 24, 2025
4933279
Connect to GraphQL API
pauldps Nov 24, 2025
61fc56c
Implement route guards for authenticated routes and enhance auth stor…
pauldps Nov 26, 2025
3db44aa
Update getAuthApiUrl function to support VITE_DPS_API_PATH and enhanc…
pauldps Nov 26, 2025
230277b
Add credentials configuration to GraphQL client for cookie handling
pauldps Nov 26, 2025
058cda3
Implement async route guard and enhance auth store to handle null use…
pauldps Nov 27, 2025
fb92b0d
HomeView layout WIP
pauldps Nov 27, 2025
748d96e
Password change view
pauldps Nov 27, 2025
9d4a4ea
Implement logout functionality in HomeView and add loading state
pauldps Nov 27, 2025
2e0d2d1
Update LoginDropdown to handle session state and implement logout fun…
pauldps Nov 27, 2025
0493590
Implement global toast notification system and integrate with logout …
pauldps Nov 27, 2025
a57ea31
Admin skeleton
pauldps Dec 6, 2025
e966170
Update backend GraphQL schema
pauldps Dec 6, 2025
32005f5
Implement tabbed interface in AdminApp with Dashboard, Users, and Sit…
pauldps Dec 6, 2025
cc4079e
Add opencode.json configuration file with permission settings
pauldps Dec 6, 2025
2c501db
Refactor currentTab computation to use a constant for route names
pauldps Dec 6, 2025
74df1ee
Update backend schema
pauldps Dec 6, 2025
f1d0802
Update auth store to align with backend schema changes, adding role i…
pauldps Dec 6, 2025
de801bb
Implement AdminSitesView component to display sites with edit and del…
pauldps Dec 6, 2025
565584d
Implement Add Site functionality in Admin panel with routing, form ha…
pauldps Dec 31, 2025
e3f0943
enhance user management features
pauldps Jan 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ node_modules
dist
dist-ssr
*.local
tmp

.env

# Editor directories and files
.vscode/*
Expand Down
1 change: 1 addition & 0 deletions .roo/rules/rules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALWAYS READ `docs/llm/instructions.md` BEFORE STARTING ANY TASK.
5 changes: 4 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
{
"recommendations": ["Vue.volar"]
"recommendations": [
"Vue.volar",
"bradlc.vscode-tailwindcss"
]
}
100 changes: 100 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# AGENTS.md

## Commands

- **Build**: `bun run build` (this generates the `dist/` folder)

## Working Guidelines

### Before Starting Tasks
- Read the `README.md` to get project context and progress
- When needing current date/time, run `date +%Y-%m-%d@%H:%M` for YYYY-MM-DD@HH:MM format (24-hour, no AM/PM)
- Git operations (commits, branches, merges, rebases) are NOT part of agent tasks

### Working with Plans
- Save plans in `docs/llm/plans/YYYY/MM/` directory structure
- Name files as `DD-task-name.md` (day + dash + lowercase task with dashes)
- Include implementation details: files to modify/create, code samples for new functions
- If applicable, suggest existing npm packages that can help with the implementation during plan creation; if multiple packages exist, list pros/cons and recommend one
- Never include git operations, changelogs, PR descriptions, version bumps, or release notes in plans
- Never worry about backwards compatibility if the version is pre-1.0.0
- If plan involves using a component from Shadcn that is not already created, include the command to generate it using the Shadcn CLI
- Do not code immediately after writing plans - wait for user review/approval

### Implementing Plans
- Only start implementation after explicit user command
- During implementation, STOP and inform user if deviating from the plan in any way
- Never implement anything not explicitly mentioned in the plan
- After implementation is fully finished and all tests pass, run the linter command and fix any issues


## Project Structure

- This is a Bun project. Never use `npm`, `node`, `typescript`, or `tsc` commands. Always use `bun` commands.
- This is a Vue project using Typescript natively (via Bun). Typescript transpilation is not required.

- Entry point is `src/main.ts`.
- Main app component is `src/App.vue`.
- Views live in `src/views/`.
- Components live in `src/components/`.

- Stores live in `src/stores/`.
- The project uses Pinia for state management.
- The Auth store stores user session state from the GraphQL backend.

- The router (Vue Router) is configured in `src/lib/router.ts`.
- When adding child routes, do NOT add the leading slash (`/`) to the path.
- Example: use `path: 'settings'` instead of `path: '/settings'` for a child route.

- The lib folder (`src/lib/`) also contains utility functions and modules.

- The project uses Shadcn-Vue for component generation. Generated components live in `src/components/ui/`.
- When installing new Shadcn-Vue components, use the `bunx --bun shadcn-vue@latest add <component>` command.
- After installing a Shadcn-Vue component, do not change the generated code. If changes are necessary, document them in the plan.

- Other components live in `src/components/` (not in `ui/`).

- The project has an `@` alias pointing to `src/` for easier imports. When importing from `src/`, use `@/` instead of relative paths.

- Styles live in `src/style.css`. However that file is mostly for TailwindCSS imports and global styles.
- For global styles, use App.vue's `<style>` block.
- For component-specific styles, use the component's own `<style>` block. Do not use `scoped` styles.

- In `.vue` files, always place the `<script>` block first, followed by the `<template>`, and then the `<style>`.
- If the `<style>` block has no styles set, omit it entirely.

- The project uses composition API with `<script setup lang="ts">` syntax in Vue components.

- When designing interfaces, use TailwindCSS 4 for styling.

- When working with links to routes use `router-link`. For links or buttons with the `to` argument, use route objects (with `name` property) instead of strings.

## Backend Interaction

- The app interacts with a GraphQL backend for authentication and user management.
- The GraphQL schema is documented in `docs/backend-graphql-schema.md`.


## Code Style Guidelines

### General
- Bias towards simplicity: don't over-engineer
- Do not install any new packages unless they are specified in the plan

### Testing

For unit tests of non-Vue code:
- Use `bun:test` framework with `describe`, `it`, and `expect` functions
- Do not use "should" in test descriptions (e.g., use `it('returns the correct path')` instead of `it('should return...')`)

Testing of Vue components is not currently required.

### Linting

There currently no linter configured. Use these simple rules:
- Use 2 spaces for indentation
- Use single quotes for strings
- No semicolons at the end of lines
- Use trailing commas in multi-line objects and arrays
- Files should end with a newline
- Use a space before the brackets in function definitions
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2025 Dimensional Pocket <dpauth@dimensionalpocket.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
25 changes: 24 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,26 @@
# @dimensionalpocket/dps-auth-web

(WIP)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

This is the Vue app that provides the DPS authentication user interface. Consumes [DpsAuthApi](https://github.com/dimensionalpocket/dps-auth-api).

Part of the [DPS ecosystem](https://github.com/dimensionalpocket/dps-readme).

Stack: Bun, Vue 3, Vite, TailwindCSS, Pinia, Vue Router.

## Deployment

This app is fully configurable via environment variables so that you can deploy it to any CDN-backed static hosting service (e.g., Render).

The variables are prefixed with `VITE_` so that Vite can expose them to the client-side code.

| Environment Variable | Description | Default Value |
|----------------------|-------------|---------------|
| `VITE_DPS_DOMAIN` | Main domain of your website. | `dps.localhost` |
| `VITE_DPS_API_SUBDOMAIN` | Subdomain for all API services. | `api` |
| `VITE_DPS_AUTH_API_SUBDOMAIN` | Sub-subdomain for the Auth API service. | `auth` |
| `VITE_DPS_AUTH_API_PORT` | Port for the Auth API service. In development, should be set to 3000. | Not set |

## License

[MIT](LICENSE)
Loading