final
This commit is contained in:
parent
bb997e2fa7
commit
0f82f39fdd
25 changed files with 577 additions and 123 deletions
68
Periphery/PNC-Fish/Accounting/Overview.md
Normal file
68
Periphery/PNC-Fish/Accounting/Overview.md
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
---
|
||||
title: Accounting Overview
|
||||
description: Bigcapital setup, Schedule C, COGS, livestock deaths, owner draws
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, accounting, bigcapital
|
||||
editor: markdown
|
||||
dateCreated: 2026-04-12T00:00:00.000Z
|
||||
---
|
||||
|
||||
# Accounting Overview
|
||||
|
||||
## Tool: Bigcapital
|
||||
|
||||
Self-hosted, open-source accounting at `accounts.netgrimoire.com` (docker5, static Caddyfile entry).
|
||||
|
||||
Bigcapital handles:
|
||||
- Income entry from Square sales reports
|
||||
- Expense categorization to Schedule C lines
|
||||
- Livestock death inventory shrinkage journal entries
|
||||
- Owner draw tracking (separate from business expenses)
|
||||
|
||||
## Chart of Accounts
|
||||
|
||||
Mapped to **Schedule C** lines. Setup is in progress — not yet finalized.
|
||||
|
||||
Key accounts to establish:
|
||||
|
||||
| Account | Type | Schedule C Line |
|
||||
|---------|------|----------------|
|
||||
| Sales — Livestock | Revenue | Line 1 (Gross receipts) |
|
||||
| Sales — Supplies/Accessories | Revenue | Line 1 |
|
||||
| COGS — Livestock purchases | COGS | Line 36-39 |
|
||||
| Inventory shrinkage (deaths) | COGS adjustment | Line 39 |
|
||||
| Rent | Expense | Line 20b |
|
||||
| Utilities | Expense | Line 25 |
|
||||
| Supplies | Expense | Line 22 |
|
||||
| Advertising | Expense | Line 8 |
|
||||
| Owner draws | Equity | Not on Schedule C |
|
||||
|
||||
## COGS for Livestock
|
||||
|
||||
Livestock is inventory. COGS is calculated as:
|
||||
|
||||
```
|
||||
Beginning Inventory + Purchases - Ending Inventory = COGS
|
||||
```
|
||||
|
||||
**Livestock deaths** reduce ending inventory. Track in dedicated Google Sheet tab, then enter as inventory shrinkage journal entries in Bigcapital. Do not process deaths through Square.
|
||||
|
||||
## Owner Draws
|
||||
|
||||
Owner draws are equity withdrawals — not business expenses. They do not appear on Schedule C and must not be categorized as expenses. Record separately in Bigcapital as equity/drawing transactions.
|
||||
|
||||
## Income Entry Workflow
|
||||
|
||||
1. Pull sales report from Square (weekly or monthly)
|
||||
2. Enter total sales as income in Bigcapital
|
||||
3. Categorize to appropriate revenue accounts (livestock vs. supplies/accessories)
|
||||
4. Enter any expenses paid that period (receipts, invoices)
|
||||
5. Record any livestock deaths from the Google Sheet tab as shrinkage journal entries
|
||||
|
||||
## Pending
|
||||
|
||||
- [ ] Finalize chart of accounts — map all accounts to Schedule C lines
|
||||
- [ ] Confirm COGS tracking method aligns with chosen inventory accounting method (FIFO vs. average cost)
|
||||
- [ ] Set up livestock death log tab in Google Sheets
|
||||
- [ ] Establish journal entry cadence for shrinkage entries
|
||||
51
Periphery/PNC-Fish/Equipment/Reef-Tank.md
Normal file
51
Periphery/PNC-Fish/Equipment/Reef-Tank.md
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
---
|
||||
title: Reef Tank Maintenance
|
||||
description: Saltwater reef tank maintenance, water parameters, and cyanobacteria protocol
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, reef, equipment
|
||||
editor: markdown
|
||||
dateCreated: 2026-04-12T00:00:00.000Z
|
||||
---
|
||||
|
||||
# Reef Tank Maintenance
|
||||
|
||||
## Cyanobacteria Treatment Protocol
|
||||
|
||||
Use this protocol in order. Do not skip to later steps without completing earlier ones.
|
||||
|
||||
| Step | Action | Notes |
|
||||
|------|--------|-------|
|
||||
| 1 | Manual siphon removal | During water change — remove as much as possible physically |
|
||||
| 2 | Verify RO/DI TDS = 0 | Replace resin if TDS is above 0 — contaminated source water is a primary cause |
|
||||
| 3 | Check phosphate | If undetectable (<0.03 ppm), dose KH2PO4 to raise slightly — paradoxically low phosphate favors cyano over corals |
|
||||
| 4 | 3-day blackout + large water change | Starves cyano of light. Combine both for best effect. |
|
||||
| 5 | Add chaeto to refugium | Outcompetes cyano for nutrients long-term |
|
||||
| 6 | Vibrant liquid bacteria | If cyano persists after steps 1–5 |
|
||||
|
||||
**Note:** Chemi-Clean was used previously and did not fully resolve the issue. Underlying cause (RO/DI quality, phosphate imbalance, flow dead spots) was suspected. Provide current water parameters — nitrate, phosphate, TDS, salinity — to continue diagnosis.
|
||||
|
||||
## Water Parameters to Track
|
||||
|
||||
| Parameter | Target Range | Notes |
|
||||
|-----------|-------------|-------|
|
||||
| Salinity | 1.025–1.026 SG | Use refractometer |
|
||||
| Temperature | 76–78°F | Inkbird ITC-306A controls this |
|
||||
| pH | 8.1–8.3 | Check morning and evening |
|
||||
| Ammonia | 0 | Should always be undetectable |
|
||||
| Nitrite | 0 | Should always be undetectable |
|
||||
| Nitrate | <10 ppm | Lower for SPS; <20 for LPS/fish-only |
|
||||
| Phosphate | 0.03–0.10 ppm | Too low favors cyano; too high causes algae |
|
||||
| TDS (RO/DI output) | 0 | Replace resin if above 0 |
|
||||
|
||||
## Lighting: ReefBreeder
|
||||
|
||||
*Document ReefBreeder light model, schedule, and intensity settings here.*
|
||||
|
||||
## Water Change Schedule
|
||||
|
||||
*Document water change frequency, volume, and salt mix used.*
|
||||
|
||||
## Equipment List
|
||||
|
||||
*Document all tank equipment: skimmer, return pump, powerheads, refugium light, dosing equipment, etc.*
|
||||
43
Periphery/PNC-Fish/Equipment/Temperature-Controllers.md
Normal file
43
Periphery/PNC-Fish/Equipment/Temperature-Controllers.md
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
title: Temperature Controllers
|
||||
description: Inkbird ITC-306A WiFi temperature controller setup and troubleshooting
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, equipment, inkbird, reef
|
||||
editor: markdown
|
||||
dateCreated: 2026-04-12T00:00:00.000Z
|
||||
---
|
||||
|
||||
# Inkbird ITC-306A Temperature Controller
|
||||
|
||||
## Specs & Requirements
|
||||
|
||||
| Item | Detail |
|
||||
|------|--------|
|
||||
| Model | Inkbird ITC-306A |
|
||||
| WiFi | 2.4GHz only — will not connect to 5GHz |
|
||||
| App | INKBIRD+ (iOS and Android) |
|
||||
|
||||
## Setup
|
||||
|
||||
1. Ensure phone is connected to a **2.4GHz WiFi network** (not 5GHz) before pairing
|
||||
2. Put device in pairing mode (hold button per manual)
|
||||
3. Open INKBIRD+ app → Add device → follow pairing wizard
|
||||
4. Enter 2.4GHz WiFi credentials in app — do not attempt to connect to 5GHz SSID
|
||||
|
||||
## Known Issue — App Not Functioning After WiFi Connect
|
||||
|
||||
**Status: INCOMPLETE — resolution not confirmed**
|
||||
|
||||
Symptom: Device connects to WiFi successfully but INKBIRD+ app still does not function correctly (cannot control or read device).
|
||||
|
||||
Troubleshooting steps to try:
|
||||
- [ ] Close and fully restart INKBIRD+ app
|
||||
- [ ] Check if a firmware update is available in the app
|
||||
- [ ] Try re-pairing: remove device from app → factory reset device → re-add
|
||||
- [ ] Try a different phone if available
|
||||
- [ ] Check if router has AP isolation enabled (would prevent app ↔ device communication even on same network)
|
||||
|
||||
## Configuration (Once App Working)
|
||||
|
||||
Set temperature probe calibration offset if probe reads inaccurately. Configure heating/cooling setpoints appropriate for the tank species being controlled.
|
||||
63
Periphery/PNC-Fish/IT/Digital-Signage-Runbook.md
Normal file
63
Periphery/PNC-Fish/IT/Digital-Signage-Runbook.md
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
---
|
||||
title: Digital Signage Runbook
|
||||
description: How to update price boards and manage the TV signage system
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, signage, runbook
|
||||
editor: markdown
|
||||
dateCreated: 2026-04-12T00:00:00.000Z
|
||||
---
|
||||
|
||||
# Digital Signage Runbook
|
||||
|
||||
## Updating a Price
|
||||
|
||||
1. Open Google Sheets (master inventory)
|
||||
2. Find the item row, edit price (col C), name (col B), or tank designator (col D)
|
||||
3. Google Slides updates automatically
|
||||
4. TVs pick up the change within 5 minutes — no further action needed
|
||||
5. **Immediate update:** force-stop ScreenLite on that FireTV → relaunch
|
||||
|
||||
## Adding New Inventory
|
||||
|
||||
1. Add new row: SKU (A), display name (B), price (C), tank designator(s) (D)
|
||||
2. Multiple tank designators are space-separated: `T4 T5`
|
||||
3. Slides update automatically
|
||||
4. Push to Square: currently manual via Square catalog CSV upload
|
||||
|
||||
## When an Item Sells — Manual Fallback
|
||||
|
||||
1. Remove the tank designator from col D of that item's row
|
||||
2. Slides update automatically within a minute
|
||||
3. TV picks it up within 5 minutes
|
||||
|
||||
## Google Sheets Column Reference
|
||||
|
||||
| Column | Field | Example |
|
||||
|--------|-------|---------|
|
||||
| A | SKU | `CLOWN-001` |
|
||||
| B | Display name | `Ocellaris Clownfish` |
|
||||
| C | Price | `29.99` |
|
||||
| D | Tank designator(s) | `T4` or `T4 T5` |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Problem | Fix |
|
||||
|---------|-----|
|
||||
| TV showing stale price | Force-stop ScreenLite → relaunch |
|
||||
| Image blurry/soft text | Add `?sz=s1920` to PNG export URL in HTML file |
|
||||
| Slides not updating from Sheet | Check Apps Script in Extensions → Apps Script for errors |
|
||||
| FireTV lost the URL | Re-enter Apache URL in ScreenLite settings |
|
||||
|
||||
## Square Webhook Automation (When Deployed)
|
||||
|
||||
Once live, the automation flow will be:
|
||||
|
||||
```
|
||||
Square sale → Webhook POST → Google Apps Script Web App
|
||||
→ Find item SKU in Sheet
|
||||
→ Remove tank designator from col D
|
||||
→ Slides auto-update → TV picks up within 5 min
|
||||
```
|
||||
|
||||
**Status:** Designed, not yet deployed. Next step: configure Square developer dashboard webhook endpoint to the Apps Script URL and test with a real sale.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: IT Overview
|
||||
description: PNC Fish & More IT infrastructure
|
||||
description: PNC Fish & More IT infrastructure — web server, digital signage, networking
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, it
|
||||
|
|
@ -10,19 +10,61 @@ dateCreated: 2026-04-12T00:00:00.000Z
|
|||
|
||||
# IT Overview
|
||||
|
||||
## Website
|
||||
## Infrastructure
|
||||
|
||||
Hosted on `pncfishandmore.com`. Static/PHP stack via the Netgrimoire `web.yaml` Apache/PHP service.
|
||||
| Resource | Details |
|
||||
|----------|---------|
|
||||
| Domain | `pncfishandmore.com` — managed via ISPConfig |
|
||||
| Web server | Apache on NetGrimoire (self-hosted Docker, `web.yaml`) |
|
||||
| Email | MailCow + MXRoute relay |
|
||||
| DNS | ISPConfig + internal Technitium |
|
||||
| Accounting | Bigcapital (Docker on docker5, `accounts.netgrimoire.com`) |
|
||||
|
||||
## Email
|
||||
---
|
||||
|
||||
Handled via MailCow + MXRoute. Domain configured as part of the 8-domain mail setup.
|
||||
See [MailCow Domain Setup](/Keystone-Grimoire/Mail/Domain-Setup).
|
||||
## Digital Signage System
|
||||
|
||||
## POS System
|
||||
Three FireTV devices display live price board slides on in-store TVs. Each TV runs ScreenLite kiosk app loading an Apache HTML page, which fetches a Google Slides PNG export and refreshes it every 5 minutes via JavaScript.
|
||||
|
||||
*Document POS system here.*
|
||||
### TV Pages on Apache
|
||||
|
||||
## Network
|
||||
| File | Slide Deck | Purpose |
|
||||
|------|-----------|---------|
|
||||
| `left.html` | Saltwater fish | Main fish price board |
|
||||
| `right.html` | Secondary | Freshwater or secondary display |
|
||||
| `inverts.html` | Invertebrates | Inverts price board |
|
||||
|
||||
*Document store network here — router, AP, any on-site devices.*
|
||||
### Google Slides Deck IDs
|
||||
|
||||
| Deck | Slide ID |
|
||||
|------|---------|
|
||||
| Left (saltwater fish) | `1S3j0K1QlWAtkjq73E73At3gz9vWp9vVr_yZswUHiyN8` |
|
||||
| Right (secondary) | `1mWzgisxMQAFAhME9HXY_PEK0v_hIuQ4Md0PQS10ES8Q` |
|
||||
| Inverts | `1nzunM4pQxqmW82_Ab0rrOsV4QuO8G5TVUDodplI_4tY` |
|
||||
|
||||
PNG export URL format: `https://docs.google.com/presentation/d/<ID>/export/png?sz=s1920`
|
||||
|
||||
Use `sz=s1920` for sharper text. If display looks soft, increase canvas size in Google Slides settings.
|
||||
|
||||
### Critical: ScreenLite Does Not Respond to Meta-Refresh
|
||||
|
||||
ScreenLite ignores `<meta http-equiv="refresh">`. All TV page refreshes use JavaScript `setInterval` image src swap only:
|
||||
|
||||
```javascript
|
||||
setInterval(function() {
|
||||
var img = document.getElementById('slide');
|
||||
img.src = SLIDE_URL + '?t=' + Date.now();
|
||||
}, 300000); // 300,000ms = 5 minutes
|
||||
```
|
||||
|
||||
### Force Immediate Refresh
|
||||
|
||||
Force-stop ScreenLite on the FireTV and relaunch. It reloads the Apache URL and picks up the latest PNG immediately.
|
||||
|
||||
---
|
||||
|
||||
## Pending
|
||||
|
||||
- [ ] Square webhook → Apps Script → Google Sheets automation (designed, not deployed)
|
||||
- [ ] "Push to Square" Apps Script button in Google Sheets
|
||||
- [ ] Store network documentation (router, AP, FireTV connections)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Marketing Overview
|
||||
description: PNC Fish & More marketing and promotions
|
||||
description: Digital signage content, promotions, social media
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, marketing
|
||||
|
|
@ -10,4 +10,18 @@ dateCreated: 2026-04-12T00:00:00.000Z
|
|||
|
||||
# Marketing Overview
|
||||
|
||||
*Add marketing documentation here: social media accounts, posting schedules, ad campaigns, promotions, photography workflow for livestock, etc.*
|
||||
## Digital Signage
|
||||
|
||||
In-store TV price boards are the primary customer-facing marketing surface. See [Digital Signage Runbook](/PNC-Fish/IT/Digital-Signage-Runbook) for how to update content.
|
||||
|
||||
## Social Media
|
||||
|
||||
*Document social media accounts, posting schedule, and content workflow here.*
|
||||
|
||||
## Promotions
|
||||
|
||||
*Document any recurring promotions, seasonal sales, or loyalty programs here.*
|
||||
|
||||
## Photography Workflow
|
||||
|
||||
*Document how livestock photos are taken and used for signage, social media, and Square catalog.*
|
||||
|
|
|
|||
67
Periphery/PNC-Fish/Operations/Inventory.md
Normal file
67
Periphery/PNC-Fish/Operations/Inventory.md
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
title: Inventory Management
|
||||
description: Google Sheets master inventory, Square POS, and sales workflow
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, inventory, square
|
||||
editor: markdown
|
||||
dateCreated: 2026-04-12T00:00:00.000Z
|
||||
---
|
||||
|
||||
# Inventory Management
|
||||
|
||||
## Source of Truth
|
||||
|
||||
**Google Sheets is the master inventory.** Square is a downstream target. Never update Square first and then try to sync back to Sheets — always update Sheets first.
|
||||
|
||||
## Google Sheets Structure
|
||||
|
||||
| Column | Field | Notes |
|
||||
|--------|-------|-------|
|
||||
| A | SKU | Unique identifier |
|
||||
| B | Display name | Name shown on price board |
|
||||
| C | Price | Retail price |
|
||||
| D | Tank designator(s) | Space-separated: `T4 T5`. Drives which TV slide shows the item. Remove when sold. |
|
||||
|
||||
A separate tab tracks **livestock deaths** — used for inventory shrinkage journal entries in Bigcapital. See [Accounting](/PNC-Fish/Accounting/Overview).
|
||||
|
||||
## Square POS Integration
|
||||
|
||||
### Current State (Manual)
|
||||
|
||||
New inventory added to Square via CSV catalog upload. Sales are recorded in Square, then manually reconciled against Google Sheets.
|
||||
|
||||
### Planned Automation
|
||||
|
||||
| Direction | Method | Status |
|
||||
|-----------|--------|--------|
|
||||
| Sale → Sheet | Square webhook → Google Apps Script → remove tank designator | Designed, not deployed |
|
||||
| Sheet → Square | "Push to Square" Apps Script button | Planned, not built |
|
||||
|
||||
### Square API Notes
|
||||
|
||||
- Square API access is free — no additional cost beyond transaction fees
|
||||
- Webhook + Apps Script integration has zero incremental cost
|
||||
- Apps Script is deployed as a Google Web App to receive Square webhook POSTs
|
||||
|
||||
## Adding New Livestock
|
||||
|
||||
1. Add row to Google Sheet: SKU, display name, price, tank designator
|
||||
2. Slides auto-update → TV price board updates within 5 minutes
|
||||
3. Push to Square: CSV upload to Square catalog (manual until automation is live)
|
||||
|
||||
## When Item Sells
|
||||
|
||||
**With automation (planned):** Square fires webhook → Apps Script removes tank designator → done
|
||||
|
||||
**Manual fallback (current):**
|
||||
1. Process sale in Square
|
||||
2. Open Google Sheet
|
||||
3. Remove tank designator from col D for that item
|
||||
4. Slides auto-update, TV picks up within 5 minutes
|
||||
|
||||
## Livestock Death Tracking
|
||||
|
||||
1. Record death in dedicated Google Sheet tab (date, species, SKU, cost)
|
||||
2. Enter as inventory shrinkage journal entry in Bigcapital
|
||||
3. Do NOT process through Square
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Operations Overview
|
||||
description: PNC Fish & More day-to-day operations documentation
|
||||
description: Day-to-day store operations — sales, inventory, payroll
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, operations
|
||||
|
|
@ -10,4 +10,19 @@ dateCreated: 2026-04-12T00:00:00.000Z
|
|||
|
||||
# Operations Overview
|
||||
|
||||
*Add operations documentation here: inventory management, supplier contacts, tank maintenance schedules, livestock sourcing, water chemistry protocols, etc.*
|
||||
## Key Runbooks
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| [Inventory Management](/PNC-Fish/Operations/Inventory) | Google Sheets, Square POS, adding livestock, sales workflow |
|
||||
| [Payroll](/PNC-Fish/Operations/Payroll) | Current process, Florida Reemployment Tax, tool decision |
|
||||
|
||||
## Quick Reference
|
||||
|
||||
**Updating a price board:** Edit Google Sheet → TV updates in 5 minutes
|
||||
|
||||
**New livestock arrived:** Add to Sheet → Push to Square (CSV) → update tank designator
|
||||
|
||||
**Item sold:** Remove tank designator from Sheet col D
|
||||
|
||||
**Employee paid:** Weekly by check — record hours in inherited Excel spreadsheets
|
||||
|
|
|
|||
43
Periphery/PNC-Fish/Operations/Payroll.md
Normal file
43
Periphery/PNC-Fish/Operations/Payroll.md
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
title: Payroll
|
||||
description: Current payroll process, Florida Reemployment Tax, tool decision
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, payroll, hr
|
||||
editor: markdown
|
||||
dateCreated: 2026-04-12T00:00:00.000Z
|
||||
---
|
||||
|
||||
# Payroll
|
||||
|
||||
## Current Process
|
||||
|
||||
| Item | Method |
|
||||
|------|--------|
|
||||
| Pay schedule | Weekly |
|
||||
| Payment method | Handwritten check |
|
||||
| Hours tracking | Inherited Excel spreadsheets |
|
||||
| Quarterly filing | Florida Reemployment Tax — filed manually |
|
||||
| Annual | W-2s |
|
||||
|
||||
The Excel spreadsheets were inherited from the prior accountant. They are still in active use.
|
||||
|
||||
## Compliance Requirements
|
||||
|
||||
- **Florida Reemployment Tax** must be filed quarterly
|
||||
- **W-2s** issued annually to employees
|
||||
- **Owner draws** are not wages — do not run through payroll, do not appear on Schedule C
|
||||
|
||||
## Tool Decision — Pending
|
||||
|
||||
| Option | Cost | Notes |
|
||||
|--------|------|-------|
|
||||
| Continue manual (Excel) | Free | Works but scales poorly; compliance risk increases with headcount |
|
||||
| Square Payroll | ~$35/mo + $6/employee | Handles FL Reemployment Tax, W-2s, direct deposit |
|
||||
| Other managed payroll | Varies | QuickBooks Payroll, Gusto, etc. |
|
||||
|
||||
**Decision not yet made.** Key factor: Florida Reemployment Tax compliance and W-2 accuracy. The manual approach is viable for 1-2 employees but becomes a compliance risk as the team grows.
|
||||
|
||||
## Next Step
|
||||
|
||||
Review inherited Excel spreadsheets. Determine current employee count and pay structure. Make managed vs. manual decision based on headcount and compliance comfort level.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: PNC Fish & More
|
||||
description: Saltwater fish and coral store — IT, operations, and business documentation
|
||||
description: Saltwater fish and coral store — IT, operations, accounting, and equipment
|
||||
published: true
|
||||
date: 2026-04-12T00:00:00.000Z
|
||||
tags: pncfish, business
|
||||
|
|
@ -12,7 +12,9 @@ dateCreated: 2026-04-12T00:00:00.000Z
|
|||
|
||||

|
||||
|
||||
PNC Fish & More is a saltwater fish and coral store. This section of the grimoire covers IT infrastructure, business operations, and marketing documentation for the store.
|
||||
PNC Fish & More is a saltwater fish and coral store (single-member LLC, Fort Walton Beach, FL). This grimoire covers all IT infrastructure, business operations, accounting, and equipment documentation for the store.
|
||||
|
||||
**Design principle:** Zero/low-cost, self-managed stack. No unnecessary SaaS subscriptions. Open-source tools where maintenance burden is manageable.
|
||||
|
||||
**Domain:** `pncfishandmore.com`
|
||||
|
||||
|
|
@ -22,21 +24,50 @@ PNC Fish & More is a saltwater fish and coral store. This section of the grimoir
|
|||
|
||||
| Section | Contents |
|
||||
|---------|----------|
|
||||
| [IT](/PNC-Fish/IT/Overview) | Website, POS system, networking, hosting |
|
||||
| [Operations](/PNC-Fish/Operations/Overview) | Inventory management, suppliers, tank management |
|
||||
| [Marketing](/PNC-Fish/Marketing/Overview) | Social media, promotions, advertising |
|
||||
| [IT](/PNC-Fish/IT/Overview) | Apache web server, digital signage, networking, hosting |
|
||||
| [Operations](/PNC-Fish/Operations/Inventory) | Inventory management, Square POS, sales workflow |
|
||||
| [Accounting](/PNC-Fish/Accounting/Overview) | Bigcapital, Schedule C, COGS, payroll |
|
||||
| [Equipment](/PNC-Fish/Equipment/Temperature-Controllers) | Inkbird ITC-306A, ReefBreeder lights, reef tank |
|
||||
| [Marketing](/PNC-Fish/Marketing/Overview) | Digital signage content, promotions |
|
||||
|
||||
---
|
||||
|
||||
## IT Overview
|
||||
## Stack at a Glance
|
||||
|
||||
| Resource | Details |
|
||||
|----------|---------|
|
||||
| Domain | `pncfishandmore.com` (managed via ISPConfig) |
|
||||
| Website | Hosted on Netgrimoire Apache/PHP stack |
|
||||
| Email | Via MailCow + MXRoute relay |
|
||||
| DNS | ISPConfig + OPNsense internal |
|
||||
| Service | Host | Purpose | Cost |
|
||||
|---------|------|---------|------|
|
||||
| Apache web server | NetGrimoire (self-hosted) | Serves TV signage pages | Free |
|
||||
| Bigcapital | NetGrimoire (Docker) | Accounting / Schedule C | Free / self-hosted |
|
||||
| Google Sheets | Google | Master inventory source of truth | Free |
|
||||
| Google Slides (3 decks) | Google | Digital signage content | Free |
|
||||
| Google Apps Script | Google | Square webhook + automation | Free |
|
||||
| Square POS | In-store | Point-of-sale, transaction processing | Transaction fees only |
|
||||
| ScreenLite | FireTV devices | Kiosk app, loads Apache pages | App cost |
|
||||
| FireTV (multiple) | In-store TVs | Display hardware | Hardware only |
|
||||
|
||||
---
|
||||
|
||||
*Sections below are stubs — add content as needed.*
|
||||
## Integration Architecture
|
||||
|
||||
```
|
||||
Google Sheets (master inventory)
|
||||
→ Google Slides (auto-updated from Sheet)
|
||||
→ Apache HTML pages (PNG export, 5-min refresh)
|
||||
→ FireTV + ScreenLite (display)
|
||||
|
||||
Square sale
|
||||
→ Webhook → Google Apps Script
|
||||
→ Google Sheets (decrement / remove tank designator)
|
||||
→ Slides update automatically
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Key Design Decisions
|
||||
|
||||
- **Google Sheets is the master source of truth** for inventory — Square is a downstream target, not the source
|
||||
- **ERPNext rejected** — US tax table upkeep burden too high for a small operation
|
||||
- **ScreenLite ignores meta-refresh** — all TV page refreshes must use JavaScript `setInterval` image src swap, not `<meta http-equiv="refresh">`
|
||||
- **Square API access is free** — webhook + Apps Script integration has zero incremental cost
|
||||
- **Livestock deaths** tracked via dedicated Sheet tab + Bigcapital journal entries, not through Square
|
||||
- **Owner draws are not business expenses** and must not appear on Schedule C
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue