DocPort is a modern team and project management application built with SvelteKit and PocketBase. It allows teams to organize projects, track progress, and collaborate efficiently.
- Team Management: Create and manage teams with different permissions
- Project Management: Create, update, and delete projects with status tracking
- User Authentication: Secure login system with OAuth 2.0 support
- Responsive Design: Beautiful UI that works on desktop and mobile
- Internationalization: Supports multiple languages including English and Dutch
- Node.js v18+ and pnpm
- Docker and Docker Compose (for development with PocketBase)
-
Clone the repository:
git clone https://github.com/DocPort-io/app.git cd app
-
Install dependencies:
pnpm install
-
Start the development environment:
docker compose -f compose.yml -f compose.dev.override.yml up backend
-
Start the frontend development server:
pnpm run dev
Run unit tests with Vitest:
pnpm run test:unit
To run a specific test:
pnpm run test:unit -- --test="test name"
# or
pnpm run test:unit path/to/spec.ts
Run E2E tests with Playwright:
pnpm run test:e2e
The application can be deployed using Docker:
-
Build the Docker containers (if not already built):
docker compose build
-
Start the services in detached mode:
docker compose up -d
This deploys both the frontend SvelteKit application and the PocketBase backend. The frontend will be available on port 3000 and the backend on port 8080 by default.
- SvelteKit - Web framework
- Svelte 5 - Component framework
- PocketBase - Backend database and auth
- TailwindCSS - CSS framework
- Shadcn-Svelte - UI components
- Docker - Containerization
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
We use SemVer for versioning. For the versions available, see the tags on this repository and the GitHub Releases page.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- SvelteKit team for the excellent framework
- PocketBase for the lightweight backend solution
- Shadcn for the UI component inspiration