Restructure: rename to Pulse and move app to root

- Renamed project from PSA-Utils to Pulse
- Moved all app files from autotask-app/ to root
- Updated package.json name to 'pulse'
- Updated Docker container names to pulse-app and pulse-redis
- Updated Docker network name to pulse-network
This commit is contained in:
Lorentz Hinrichsen 2025-10-28 23:08:54 -04:00
parent f429f3af54
commit 3c3124d8c9
117 changed files with 8433 additions and 239 deletions

163
.gitignore vendored
View file

@ -1,138 +1,41 @@
# ───────────────────────────────
# Node.js / npm / pnpm
# ───────────────────────────────
node_modules/
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json
.pnpm-debug.log*
.pnpm-store/
# ───────────────────────────────
# Environment Files
# ───────────────────────────────
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# env files (can opt-in for committing if needed)
.env*
# Example envs are safe to commit
!.env.example
# ───────────────────────────────
# Build Artifacts
# ───────────────────────────────
dist/
build/
.cache/
.tmp/
.next/
out/
coverage/
logs/
*.log
*.pid
*.seed
*.pid.lock
# ───────────────────────────────
# Docker
# ───────────────────────────────
docker-data/
docker-redis/
volumes/
docker-compose.override.yml
# ───────────────────────────────
# TypeScript
# ───────────────────────────────
*.tsbuildinfo
tsconfig.tsbuildinfo
*.d.ts.map
# ───────────────────────────────
# shadcn / Tailwind / Next.js
# ───────────────────────────────
.next/
.next/cache/
.next/static/
.next/server/
.next/types/
.next/output/
public/build/
.turbo/
.turbopack/
tailwind.config.js.timestamp*
postcss.config.js.timestamp*
*.vercel
# vercel
.vercel
.storybook/
.vitest/
.vitest-temp/
# ───────────────────────────────
# Redis dump and cache
# ───────────────────────────────
dump.rdb
*.rdb
*.aof
# ───────────────────────────────
# Backend temporary files
# ───────────────────────────────
backend/node_modules/
backend/npm-debug.log*
backend/.env
backend/.cache
backend/.next
backend/.turbo
backend/dist/
backend/build/
# ───────────────────────────────
# Frontend temporary files
# ───────────────────────────────
frontend/node_modules/
frontend/npm-debug.log*
frontend/.env
frontend/.cache
frontend/.next
frontend/.turbo
frontend/dist/
frontend/build/
# ───────────────────────────────
# Editor / OS Specific
# ───────────────────────────────
.DS_Store
Thumbs.db
.idea/
.vscode/
*.swp
*.swo
# ───────────────────────────────
# Coverage / Testing
# ───────────────────────────────
coverage/
.nyc_output/
jest-results/
test-results/
cypress/screenshots/
cypress/videos/
playwright-report/
test-output/
# ───────────────────────────────
# Miscellaneous
# ───────────────────────────────
*.bak
*.tmp
*.tgz
*.orig
*.rej
*.local
.envrc
.envrc.bak
# typescript
*.tsbuildinfo
next-env.d.ts

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1 @@
[]

Binary file not shown.

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

View file

@ -1,41 +0,0 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
.env*
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts

View file

@ -1,62 +0,0 @@
// Simple in-memory cache with TTL
interface CacheEntry<T> {
data: T;
timestamp: number;
ttl: number;
}
class SimpleCache {
private cache: Map<string, CacheEntry<any>> = new Map();
set<T>(key: string, data: T, ttlMinutes: number = 5): void {
this.cache.set(key, {
data,
timestamp: Date.now(),
ttl: ttlMinutes * 60 * 1000, // Convert to milliseconds
});
}
get<T>(key: string): T | null {
const entry = this.cache.get(key);
if (!entry) {
return null;
}
// Check if expired
if (Date.now() - entry.timestamp > entry.ttl) {
this.cache.delete(key);
return null;
}
return entry.data as T;
}
delete(key: string): void {
this.cache.delete(key);
}
clear(): void {
this.cache.clear();
}
// Clean up expired entries
cleanup(): void {
const now = Date.now();
for (const [key, entry] of this.cache.entries()) {
if (now - entry.timestamp > entry.ttl) {
this.cache.delete(key);
}
}
}
}
// Global cache instance
export const apiCache = new SimpleCache();
// Run cleanup every 5 minutes (server-side only)
if (typeof window === 'undefined') {
setInterval(() => {
apiCache.cleanup();
}, 5 * 60 * 1000);
}

Binary file not shown.

Binary file not shown.

View file

@ -4,7 +4,7 @@ services:
# Redis cache service on custom port 6380 (instead of default 6379)
redis:
image: redis:7-alpine
container_name: psa-utils-redis
container_name: pulse-redis
restart: unless-stopped
ports:
- "6380:6379"
@ -22,7 +22,7 @@ services:
build:
context: .
dockerfile: Dockerfile
container_name: psa-utils-app
container_name: pulse-app
restart: unless-stopped
ports:
- "3100:3100"
@ -64,4 +64,4 @@ volumes:
networks:
default:
name: psa-utils-network
name: pulse-network

BIN
favicon.0b3bf435.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -54,9 +54,8 @@ class SimpleCache {
// Global cache instance
export const apiCache = new SimpleCache();
// Run cleanup every 5 minutes
// Run cleanup every 5 minutes (server-side only)
if (typeof window === 'undefined') {
// Server-side only
setInterval(() => {
apiCache.cleanup();
}, 5 * 60 * 1000);

Some files were not shown because too many files have changed in this diff Show more