Skip to content

quixsi/core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quixsi Application

A monorepo containing a Go backend API server and Vue.js frontend portal application.

Project Structure

.
├── cmd/                    # Go application entry points
│   ├── server/            # Backend API server
│   └── cli/               # Command-line tools
├── internal/              # Private Go application code
│   ├── server/            # Server implementation
│   ├── config/            # Configuration handling
│   ├── models/            # Data models
│   └── utils/             # Internal utilities
└── ui/                    # UI-related code
    ├── apps/portal/       # Main Vue.js application
    └── packages/components/ # Shared component library

Prerequisites

  • Go: Version 1.24 or later
  • Node.js: Version 18 or later
  • npm: Latest version

Quick Start

1. Install Dependencies

Go Dependencies

go mod download

UI Dependencies

make ui/install
# or manually:
cd ui && npm install

2. Run Development Servers

Option A: Run Both (Recommended)

# Terminal 1: Start backend server
make dev/server

# Terminal 2: Start frontend portal
make ui/dev

Option B: Run Individually

Backend Only:

make dev/server
# or: go run ./cmd/server

Frontend Only:

make ui/dev
# or: cd ui/apps/portal && npm run dev

3. Access Applications

Development Commands

Go Backend

Command Description
make build Build Go binaries (server and cli)
make dev/server Run development server
make dev/cli Run CLI tool
make test Run Go tests
make lint Run golangci-lint
make fmt Format Go code
make mod Tidy and verify Go modules
make deps Download Go dependencies
make clean Remove build artifacts

Frontend UI

Command Description
make ui/install Install UI dependencies
make ui/dev Start UI development servers
make ui/build Build UI workspaces
make ui/clean Remove UI node_modules
make ui/dev/container Run UI in Docker container

Portal App Specific

From ui/apps/portal/ directory:

Command Description
npm run dev Start development server (port 3000)
npm run build Type-check and build for production
npm run type-check Run Vue TypeScript type checking
npm run preview Preview production build
npm run test:e2e Run Playwright end-to-end tests

Testing

End-to-End Tests

# First-time setup (install browsers)
cd ui/apps/portal
npx playwright install

# Run all E2E tests
npm run test:e2e

# Run tests on specific browser
npm run test:e2e -- --project=chromium

# Run specific test file
npm run test:e2e -- tests/example.spec.ts

# Debug mode
npm run test:e2e -- --debug

Go Tests

make test
# or: go test ./...

Production Build

Backend

make build
# Binaries will be created in bin/ directory
./bin/server  # Run the server
./bin/cli     # Run CLI tools

Frontend

make ui/build
# or: cd ui/apps/portal && npm run build

Container Deployment

Individual Services

Build and run server container:

podman build -f Containerfile.server -t quixsi-server .
podman run -p 8080:8080 quixsi-server

Build and run UI container:

podman build -f Containerfile.ui -t quixsi-ui .
podman run -p 8080:8080 quixsi-ui

Kubernetes Deployment

Deploy to Kubernetes cluster:

# Apply all manifests
kubectl apply -f deploy/

# Or apply individually
kubectl apply -f deploy/server-configmap.yaml
kubectl apply -f deploy/server-deployment.yaml
kubectl apply -f deploy/server-service.yaml
kubectl apply -f deploy/ui-deployment.yaml
kubectl apply -f deploy/ui-service.yaml
kubectl apply -f deploy/network-policies.yaml

Check deployment status:

kubectl get pods -l app=quixsi-server
kubectl get pods -l app=quixsi-ui
kubectl get services

Access services (port-forward for testing):

# Access UI
kubectl port-forward service/quixsi-ui 8080:8080

# Access server API
kubectl port-forward service/quixsi-server 8081:8080

Docker Development (Legacy)

Run the UI in a Docker container:

cd ui
make dev/container

Technology Stack

Backend

  • Go 1.24
  • Module: github.com/quixsi/app
  • Standard Go project layout

Frontend

  • Vue 3 with Composition API and TypeScript
  • Vite build tool
  • TailwindCSS v4 for styling
  • Vue Router for routing
  • Playwright for E2E testing

Components Library

  • Vue 3 components with TailwindCSS
  • reka-ui, lucide-vue-next, class-variance-authority
  • Shared across applications via npm workspaces

Project Architecture

  • Monorepo: Uses npm workspaces for UI package management
  • Independent Services: Backend and frontend can run separately
  • Shared Components: UI components library shared between applications
  • TypeScript: Strict type checking enabled
  • Modern Tooling: Vite for fast development and builds

Troubleshooting

Common Issues

  1. Port Conflicts: Ensure ports 3000 (frontend) and 8080 (backend) are available
  2. Node Version: Use Node.js 18+ for compatibility
  3. Go Version: Ensure Go 1.24+ is installed
  4. Dependencies: Run go mod download and make ui/install if packages are missing

Build Issues

If builds fail:

# Clean and reinstall
make clean/all
make ui/clean/all
go mod download
make ui/install

Contributing

  1. Follow existing code conventions
  2. Run tests before submitting changes
  3. Use the provided linting tools (make lint, npm run type-check)
  4. Keep commits focused and descriptive

For more detailed development guidance, see CLAUDE.md.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors