update to turftracking
This commit is contained in:
14
README.md
14
README.md
@@ -1,6 +1,6 @@
|
||||
# TurfTracker - Professional Lawn Care Management
|
||||
# TurfTracking - Professional Lawn Care Management
|
||||
|
||||
TurfTracker is a comprehensive web application designed for homeowners to track and manage their lawn care activities including fertilizer applications, weed control, mowing schedules, and equipment management.
|
||||
TurfTracking is a comprehensive web application designed for homeowners to track and manage their lawn care activities including fertilizer applications, weed control, mowing schedules, and equipment management.
|
||||
|
||||
## Features
|
||||
|
||||
@@ -76,7 +76,7 @@ TurfTracker is a comprehensive web application designed for homeowners to track
|
||||
|
||||
- Docker and Docker Compose
|
||||
- Traefik reverse proxy running with `proxy` network
|
||||
- DNS pointing `turftracker.kaspers.us` to your server
|
||||
- DNS pointing `turftracker.kaspers.us` to your server (or your chosen domain)
|
||||
- Git
|
||||
|
||||
### Traefik Configuration Notes
|
||||
@@ -92,7 +92,7 @@ This application is pre-configured for deployment behind Traefik with:
|
||||
1. **Clone the repository**
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd turftracker
|
||||
cd turftracking
|
||||
```
|
||||
|
||||
2. **Environment Configuration**
|
||||
@@ -235,8 +235,8 @@ If you have an Authentik instance for SSO:
|
||||
|
||||
3. **In Authentik Applications:**
|
||||
- Create new Application
|
||||
- Set Name: `TurfTracker`
|
||||
- Set Slug: `turftracker`
|
||||
- Set Name: `TurfTracking`
|
||||
- Set Slug: `turftracking`
|
||||
- Set Provider: (select the provider created above)
|
||||
|
||||
**Scopes Required:** `openid profile email`
|
||||
@@ -244,7 +244,7 @@ If you have an Authentik instance for SSO:
|
||||
## Application Structure
|
||||
|
||||
```
|
||||
turftracker/
|
||||
turftracking/
|
||||
├── backend/ # Node.js API server
|
||||
│ ├── src/
|
||||
│ │ ├── routes/ # API endpoints
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "turftracker-backend",
|
||||
"name": "turftracking-backend",
|
||||
"version": "1.0.0",
|
||||
"description": "Backend API for TurfTracker lawn care management application",
|
||||
"description": "Backend API for TurfTracking lawn care management application",
|
||||
"main": "src/app.js",
|
||||
"scripts": {
|
||||
"start": "node src/app.js",
|
||||
@@ -38,6 +38,6 @@
|
||||
"fertilizer",
|
||||
"turf management"
|
||||
],
|
||||
"author": "TurfTracker Team",
|
||||
"author": "TurfTracking Team",
|
||||
"license": "MIT"
|
||||
}
|
||||
@@ -136,7 +136,7 @@ process.on('SIGINT', () => {
|
||||
});
|
||||
|
||||
app.listen(PORT, '0.0.0.0', () => {
|
||||
console.log(`TurfTracker API server running on port ${PORT}`);
|
||||
console.log(`TurfTracking API server running on port ${PORT}`);
|
||||
console.log(`Environment: ${process.env.NODE_ENV || 'development'}`);
|
||||
});
|
||||
// Disable etags and set no-store by default to avoid stale cached API responses
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "turftracker-frontend",
|
||||
"name": "turftracking-frontend",
|
||||
"version": "1.0.0",
|
||||
"description": "Frontend React application for TurfTracker lawn care management",
|
||||
"description": "Frontend React application for TurfTracking lawn care management",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@testing-library/jest-dom": "^5.17.0",
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#059669" />
|
||||
<meta name="description" content="TurfTracker - Professional lawn care management and tracking application" />
|
||||
<meta name="description" content="TurfTracking - Professional lawn care management and tracking application" />
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
<!-- Progressive Web App meta tags -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="default">
|
||||
<meta name="apple-mobile-web-app-title" content="TurfTracker">
|
||||
<meta name="apple-mobile-web-app-title" content="TurfTracking">
|
||||
|
||||
<title>TurfTracker - Lawn Care Management</title>
|
||||
<title>TurfTracking - Lawn Care Management</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
@@ -29,7 +29,7 @@
|
||||
<div id="loading-indicator" class="fixed inset-0 flex items-center justify-center bg-green-50 z-50">
|
||||
<div class="text-center">
|
||||
<div class="animate-spin rounded-full h-12 w-12 border-b-2 border-green-600 mx-auto mb-4"></div>
|
||||
<h2 class="text-xl font-semibold text-green-800">TurfTracker</h2>
|
||||
<h2 class="text-xl font-semibold text-green-800">TurfTracking</h2>
|
||||
<p class="text-green-600">Loading your lawn care dashboard...</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -20,7 +20,7 @@ const AuthLayout = ({ children }) => {
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
<h1 className="text-3xl font-bold text-gray-900 mb-2">TurfTracker</h1>
|
||||
<h1 className="text-3xl font-bold text-gray-900 mb-2">TurfTracking</h1>
|
||||
<p className="text-lg text-gray-600">Professional Lawn Care Management</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -145,7 +145,7 @@ const Layout = ({ children }) => {
|
||||
/>
|
||||
<div className="fixed inset-y-0 left-0 flex w-64 flex-col bg-white shadow-xl">
|
||||
<div className="flex h-16 items-center justify-between px-6 border-b border-gray-200">
|
||||
<h1 className="text-xl font-bold text-primary-600">TurfTracker</h1>
|
||||
<h1 className="text-xl font-bold text-primary-600">TurfTracking</h1>
|
||||
<button
|
||||
type="button"
|
||||
className="text-gray-400 hover:text-gray-600"
|
||||
@@ -244,7 +244,7 @@ const Layout = ({ children }) => {
|
||||
<div className="hidden lg:fixed lg:inset-y-0 lg:flex lg:w-64 lg:flex-col">
|
||||
<div className="flex min-h-0 flex-1 flex-col bg-white border-r border-gray-200">
|
||||
<div className="flex h-16 items-center px-6 border-b border-gray-200">
|
||||
<h1 className="text-xl font-bold text-primary-600">TurfTracker</h1>
|
||||
<h1 className="text-xl font-bold text-primary-600">TurfTracking</h1>
|
||||
</div>
|
||||
|
||||
<nav className="flex-1 space-y-1 px-4 py-6">
|
||||
@@ -337,7 +337,7 @@ const Layout = ({ children }) => {
|
||||
<Bars3Icon className="h-6 w-6" />
|
||||
</button>
|
||||
|
||||
<h1 className="text-lg font-semibold text-gray-900">TurfTracker</h1>
|
||||
<h1 className="text-lg font-semibold text-gray-900">TurfTracking</h1>
|
||||
|
||||
<div className="flex items-center space-x-4">
|
||||
<button className="text-gray-400 hover:text-gray-500">
|
||||
|
||||
Reference in New Issue
Block a user