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:
parent
f429f3af54
commit
3c3124d8c9
117 changed files with 8433 additions and 239 deletions
163
.gitignore
vendored
163
.gitignore
vendored
|
|
@ -1,138 +1,41 @@
|
||||||
# ───────────────────────────────
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
# Node.js / npm / pnpm
|
|
||||||
# ───────────────────────────────
|
# dependencies
|
||||||
node_modules/
|
/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*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
package-lock.json
|
|
||||||
.pnpm-debug.log*
|
.pnpm-debug.log*
|
||||||
.pnpm-store/
|
|
||||||
|
|
||||||
# ───────────────────────────────
|
# env files (can opt-in for committing if needed)
|
||||||
# Environment Files
|
.env*
|
||||||
# ───────────────────────────────
|
|
||||||
.env
|
|
||||||
.env.local
|
|
||||||
.env.development.local
|
|
||||||
.env.test.local
|
|
||||||
.env.production.local
|
|
||||||
|
|
||||||
# Example envs are safe to commit
|
# vercel
|
||||||
!.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/
|
|
||||||
|
|
||||||
# ───────────────────────────────
|
# typescript
|
||||||
# Redis dump and cache
|
*.tsbuildinfo
|
||||||
# ───────────────────────────────
|
next-env.d.ts
|
||||||
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
|
|
||||||
|
|
|
||||||
BIN
1bffadaabf893a1e-s.7cd81963.woff2
Normal file
BIN
1bffadaabf893a1e-s.7cd81963.woff2
Normal file
Binary file not shown.
BIN
2bbe8d2671613f1f-s.76dcb0b2.woff2
Normal file
BIN
2bbe8d2671613f1f-s.76dcb0b2.woff2
Normal file
Binary file not shown.
BIN
2c55a0e60120577a-s.2a48534a.woff2
Normal file
BIN
2c55a0e60120577a-s.2a48534a.woff2
Normal file
Binary file not shown.
BIN
4fa387ec64143e14-s.c1fdd6c2.woff2
Normal file
BIN
4fa387ec64143e14-s.c1fdd6c2.woff2
Normal file
Binary file not shown.
BIN
5476f68d60460930-s.c995e352.woff2
Normal file
BIN
5476f68d60460930-s.c995e352.woff2
Normal file
Binary file not shown.
BIN
7178b3e590c64307-s.b97b3418.woff2
Normal file
BIN
7178b3e590c64307-s.b97b3418.woff2
Normal file
Binary file not shown.
BIN
797e433ab948586e-s.p.dbea232f.woff2
Normal file
BIN
797e433ab948586e-s.p.dbea232f.woff2
Normal file
Binary file not shown.
BIN
83afe278b6a6bb3c-s.p.3a6ba036.woff2
Normal file
BIN
83afe278b6a6bb3c-s.p.3a6ba036.woff2
Normal file
Binary file not shown.
BIN
8a480f0b521d4e75-s.8e0177b5.woff2
Normal file
BIN
8a480f0b521d4e75-s.8e0177b5.woff2
Normal file
Binary file not shown.
BIN
9c72aa0f40e4eef8-s.18a48cbc.woff2
Normal file
BIN
9c72aa0f40e4eef8-s.18a48cbc.woff2
Normal file
Binary file not shown.
1
_clientMiddlewareManifest.json
Normal file
1
_clientMiddlewareManifest.json
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
[]
|
||||||
BIN
ad66f9afd8947f86-s.7a40eb73.woff2
Normal file
BIN
ad66f9afd8947f86-s.7a40eb73.woff2
Normal file
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
41
autotask-app/.gitignore
vendored
41
autotask-app/.gitignore
vendored
|
|
@ -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
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
BIN
bbc41e54d2fcbd21-s.799d8ef8.woff2
Normal file
BIN
bbc41e54d2fcbd21-s.799d8ef8.woff2
Normal file
Binary file not shown.
BIN
caa3a2e1cccd8315-s.p.853070df.woff2
Normal file
BIN
caa3a2e1cccd8315-s.p.853070df.woff2
Normal file
Binary file not shown.
|
|
@ -4,7 +4,7 @@ services:
|
||||||
# Redis cache service on custom port 6380 (instead of default 6379)
|
# Redis cache service on custom port 6380 (instead of default 6379)
|
||||||
redis:
|
redis:
|
||||||
image: redis:7-alpine
|
image: redis:7-alpine
|
||||||
container_name: psa-utils-redis
|
container_name: pulse-redis
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "6380:6379"
|
- "6380:6379"
|
||||||
|
|
@ -22,7 +22,7 @@ services:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
container_name: psa-utils-app
|
container_name: pulse-app
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "3100:3100"
|
- "3100:3100"
|
||||||
|
|
@ -64,4 +64,4 @@ volumes:
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
name: psa-utils-network
|
name: pulse-network
|
||||||
BIN
favicon.0b3bf435.ico
Normal file
BIN
favicon.0b3bf435.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -54,9 +54,8 @@ class SimpleCache {
|
||||||
// Global cache instance
|
// Global cache instance
|
||||||
export const apiCache = new SimpleCache();
|
export const apiCache = new SimpleCache();
|
||||||
|
|
||||||
// Run cleanup every 5 minutes
|
// Run cleanup every 5 minutes (server-side only)
|
||||||
if (typeof window === 'undefined') {
|
if (typeof window === 'undefined') {
|
||||||
// Server-side only
|
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
apiCache.cleanup();
|
apiCache.cleanup();
|
||||||
}, 5 * 60 * 1000);
|
}, 5 * 60 * 1000);
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue