Remove db_name from odoo.conf and add the 28 Sep handoff
Some checks failed
CI / Brand-leak check (push) Has been cancelled
CI / flake8 / pylint-odoo / manifest completeness (push) Has been cancelled
CI / Install all modules with --test-enable (push) Has been cancelled

db_name = TNCSC (added in 0f462ad) made Odoo create a new empty TNCSC
database on the server and hide the existing metatrontncsc database,
because db_name both auto-creates a missing database and restricts
which databases are listed and served. Local dev shares this file, so
the line would do the same on every developer's machine.

Also adds HANDOFF-2026-09-28.md (this round's work, deploy steps,
pending work and decisions), links it from HANDOFF.md, and commits
docs/website-link-audit.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
metatroncubeswdev 2026-09-28 10:58:48 -04:00
parent a011f012bb
commit f8fc4edcb7
4 changed files with 429 additions and 1 deletions

130
HANDOFF-2026-09-28.md Normal file
View File

@ -0,0 +1,130 @@
# Handoff: 28 September 2026
Covers the work done on 27–28 September 2026: the member application fields, the six real TNCSC membership plans, and the website link fixes. For phases 0–9 and general setup, read [HANDOFF.md](HANDOFF.md) first.
## Where things stand
| | |
|---|---|
| Repo | `https://git.metatroncube.in/admin/TNCSC_Odoo.git`, branch `main` |
| Commits this round | `657792b` (member fields and plans), `522e2cf` (link fixes) |
| Server | `https://tncsc.odoo.thedomainnest.com`, database `metatrontncsc`, Odoo 19.0 |
| Deployed | Yes. Both commits are live and upgraded (checked 28 Sep 2026). |
| Module versions on server | `community_membership` 19.0.1.1.0, `tncsc_deployment` 19.0.1.2.0 |
| Local dev | `deploy/` Docker stack on port **10004**, database `tncsc_site` |
## What was shipped
### `657792b`: member application fields and the six TNCSC plans
- **Plans now match tncsc.com/membership-registration** (CAD):
| Code | Plan | Price | Term | Notes |
|---|---|---|---|---|
| FAM | Annual/Family | $30 | 1 year | Covers member, spouse and kids at the same address |
| LONG | Long-Term Membership | $250 | 10 years | |
| LIFE | Life Term Membership | $500 | Lifetime | |
| SEN | Senior Annual Membership | $15 | 1 year | Age 65+, proof may be requested |
| SENLIFE | Senior Life Term | $250 | Lifetime | Age 60+, proof may be requested |
| STU | Student Annual Membership | $10 | 1 year | Full-time students, proof may be requested |
Every plan is subject to Board approval. The old "Individual" plan is archived, not deleted, so members already on it keep it.
- **Tier model** (`community_membership`): new fixed-term period (`term_years`), minimum age, "requires proof" flag, "includes family members" flag, and a signup description.
- **Member form, Membership tab**: first and last name (fills in the contact name), birth month and year with computed age, board approval state with Approve/Reject buttons, terms accepted, proof-of-eligibility upload, and an inline family members list. A "Pending Approval" filter was added to member search.
- **Eligibility section** (`tncsc_deployment`): the five Yes/No questions from the registration form (born in or origin of Tamil Nadu, PIO/OCI, speaks Tamil and lived in Tamil Nadu, spouse or parent Tamil and Indian, former citizenship of a neighbouring country). An unanswered question stays blank rather than counting as "No".
- Birth date, proof document and eligibility answers are visible to **Membership Managers only**.
- A plan's minimum age is enforced once a birth year is entered.
- `scripts/migrate_wp_members.py` maps WordPress levels to the new `LONG` and `SENLIFE` codes.
- Three older `community_membership` tests that already failed on a TNCSC install were fixed.
- Migration `tncsc_deployment/migrations/19.0.1.1.0/post-migrate.py` updates the plans on existing databases.
### `522e2cf`: broken and placeholder links across the website
| Where | Before | Now |
|---|---|---|
| Footer social icons (11 pages) | facebook.com, youtube.com, instagram.com homepages | TNCSC's own Facebook, YouTube and Instagram pages |
| "View Event" in page headers | Static product mock-up page | `/event` |
| Home "Book Now", Events "Register Event", picnic "Add To Cart" | Mock-up page or contact form | Real Summer Picnic registration (falls back to `/event`) |
| Home "All" / "Event" tabs | `#` | `/event` |
| Benefits "Become A Member" | `/contact` | `/membership/registration` |
| About "Learn More" | `/contact` | Same link, relabelled "Contact Us" |
| Member Login → `/my` | Error 500 for anonymous visitors | Redirects to login |
| Stock Odoo footer on built-in pages | Demo text, `info@yourcompany.example.com`, 555 phone, dead links | TNCSC links, company email, TNCSC social pages |
| Stock Odoo header on built-in pages | "Contact Us" to `/contactus`, fake phone number | "Contact Us" to `/contact`, company email |
Verified locally: every internal link on 16 pages resolves, and 34/34 tests pass for `community_membership`, `community_portal` and `tncsc_deployment`.
Migration `tncsc_deployment/migrations/19.0.1.2.0/pre-migrate.py` reloads the website pages on existing databases (see Gotchas).
### Other changes
- `.mcp.json` added to `.gitignore` (it holds live credentials).
- `docs/website-link-audit.md`: an earlier audit of the live site's links. It's untracked, so commit or discard it.
## Deploying to the server
Pulling and restarting is **not enough** when models or data change. Without the upgrade step, pages that read contacts fail with `column res_partner.first_name does not exist`. This happened once during this round. After every pull that touches a module:
```bash
git pull
docker compose exec odoo odoo -c /etc/odoo/odoo.conf -d metatrontncsc \
-u community_membership,community_portal,tncsc_deployment \
--stop-after-init --http-port=8099
docker compose restart odoo
```
- `--http-port=8099` stops the one-off upgrade from clashing with the running Odoo on 8069.
- Bump the module version in `__manifest__.py` whenever you add a migration script.
- A clean upgrade log shows `Running upgrade [...] post-migrate` / `pre-migrate` and `Modules loaded.` with no `ERROR`.
## Pending work
In priority order. **Blocked** means a decision is needed from TNCSC or the project lead first.
1. **Public membership signup page** (Blocked: payment timing)
- Build the application form on `/membership/registration` (or `/membership/join`), matching the live tncsc.com form: username, email, first and last name, password, phone, zip, city, country, month/year of birth, the five eligibility questions, avatar, terms, family members for Annual/Family, and proof upload for Senior and Student plans.
- **Username and email must be checked for duplicates**, as the user types and again on submit ("Username is taken").
- Coupon codes, and payment through the enabled providers (Interac is in `community_interac`).
- Each submission creates a member with approval state "Pending Approval".
- Then point the six "Sign Up" buttons on the Membership Registration page (still `/contact`) at the new form.
2. **Board approval workflow**: Approve/Reject only set the state today. Still needed: emails to the applicant on each decision, a full refund when rejected (the live site promises one), activation after approval and payment, and possibly a board-only group.
3. **Event registration end to end**: test ticket purchase and payment for the Summer Picnic (11–12 Oct 2026). The hero "Book Now" and the Events page card are tied to that one event (`tncsc_deployment.event_summer_picnic_2026`), so after 12 Oct they point at a finished event. Make them pick the next upcoming event, as the home event list already does. Also decide whether to delete the `/product/tncsc-summer-picnic-2026` mock-up page, which nothing links to now.
4. **Company website and base URL** (Blocked: domain decision): the company "Website" is `https://tncsc.com` and appears in emails, invoices and the portal. `web.base.url` is `http://`, so emailed links use http. Both are live-database settings. Set the base URL to `https://tncsc.odoo.thedomainnest.com`. Change Website only if tncsc.com won't point at this site at go-live.
5. **Contact form check**: the arithmetic question on `/contact` has an input with no name and no validation. Test delivery and spam handling. The stock `/contactus` page is still reachable by URL, but nothing links to it.
6. **WordPress import of sensitive fields** (Decide): the import deliberately skips date of birth and eligibility answers. Now that there are manager-only fields for them, decide with TNCSC whether to import them.
7. **Phase 9 leftovers** (from `HANDOFF.md`): banner images for every module, a `v1.0.0` tag and release report, and role guides (admin, treasurer, teacher, parent). Phase 9-B go-live: production `odoo.conf` (`list_db = False`, `proxy_mode`, workers), SSL, DNS cutover, firewall and backups. Go-live needs a person with server access; don't run it unattended.
8. **Housekeeping**
- Commit or discard `docs/website-link-audit.md`.
- Upgrade the local `communityos_dev` and `tncsc_migration_test` databases, which error because they predate the new fields.
- Fix `get_installed_modules` in the ODOO-MCP repo: it requests a `version` field that Odoo 19 removed.
## Decisions needed from TNCSC
1. **Payment timing**: do applicants pay at signup and get refunded if the board rejects them (what the live site says), or pay only after approval?
2. **Automatic rejection**: should any eligibility answer block an application outright (for example prior citizenship of a listed country), or does every application go to the board?
3. **Family coverage**: the site only says Annual/Family covers spouse and children. Do Long-Term and Life Term cover family too? (Currently only Annual/Family does.)
4. **Domain**: will tncsc.com point at this Odoo site at go-live? That decides the company Website field.
5. **Currency**: the plans page shows "$" without a currency, and checkout shows CAD. Confirm CAD.
## Gotchas learned this round
- **Website pages ignore upgrades.** `views/website_pages.xml` is `noupdate="1"` so website-editor changes survive upgrades. That also means template edits never reach an existing database, and flipping the `ir_model_data.noupdate` flag doesn't help (Odoo skips existing records in any `noupdate` file). To ship page changes, add a pre-migrate that reloads the file in `init` mode (copy `migrations/19.0.1.2.0/pre-migrate.py`) and bump the version. This overwrites editor edits to those pages.
- **Login-required routes crash.** On this Odoo build, `auth='user'` with `website=True` returns a 500 for anonymous visitors instead of redirecting. Use `auth='public'` and redirect to `/web/login?redirect=...` yourself, as the existing controllers do.
- **The server has editor copies of views.** It holds a website-specific copy of `website.footer_custom`, and a normal inherit of the generic view is hidden behind it. Override with a higher `priority` on `website.layout` (the TNCSC footer uses 90).
- **Keep client data out of product modules.** `scripts/check_brand_leak.py` runs in CI. Anything TNCSC-specific (eligibility questions, prices, names) goes in `tncsc_deployment`; `community_*` modules stay generic.
- **Test codes collide.** `tncsc_deployment` seeds tier codes FAM, LONG, LIFE, SEN, SENLIFE, STU and the `TNCSC-{year}-{seq}` member ID format. Tests in product modules must use their own codes and set the ID format explicitly.
- **Running Odoo in the dev container.** From Git Bash, prefix commands with `MSYS_NO_PATHCONV=1` or container paths get rewritten. For one-off runs add `--dev= --http-port=8099 --gevent-port=8098` so they don't fight the running server for ports. Example test run on a throwaway database:
```bash
MSYS_NO_PATHCONV=1 docker compose exec -T odoo odoo -c /etc/odoo/odoo.conf \
--dev= --http-port=8099 --gevent-port=8098 -d tncsc_test -i tncsc_deployment \
--test-enable --test-tags /community_membership,/community_portal,/tncsc_deployment \
--stop-after-init
docker compose exec -T db dropdb -U odoo --force tncsc_test
```
## Access and tooling
- **Odoo MCP**: `.mcp.json` in the repo root runs the odoo-mcp server (from the `ODOO-MCP` repo) against the live database. It holds the admin login, so it is gitignored and not in this file; ask the project lead for a copy. It has **write access to the live TNCSC database**. Consider `ODOO_READ_ONLY=true` unless you need writes. After adding it, restart Claude Code and approve `odoo-mcp` (or enable it in `/mcp`).
- **Local stack**: `cd deploy && docker compose up -d`, then open `http://localhost:10004/web?db=tncsc_site`. See `HANDOFF.md` for dev logins.
- **Security**: the admin password in `.mcp.json` is stored in plain text and appeared in an AI session transcript during this round. Rotate it, then update your local copy.

View File

@ -5,6 +5,10 @@ Claude Code in a future session or a human developer. The phase-by-phase
build plan is in `CommunityOS_Implementation_Plan_for_Claude_Code.md`; this
file is the "where things actually stand" companion to it.
**Latest round:** see [HANDOFF-2026-09-28.md](HANDOFF-2026-09-28.md) for the
member application fields, the six real membership plans, the website link
fixes, and the current pending-work list.
## Status at a glance
| Phase | What it is | Status |

View File

@ -6,7 +6,6 @@ db_user = odoo
db_password = odoo
addons_path = /mnt/extra-addons
dev_mode = reload,qweb,werkzeug,xml
db_name = TNCSC
list_db = True
proxy_mode = False
logfile =

295
docs/website-link-audit.md Normal file
View File

@ -0,0 +1,295 @@
# TNCSC website link audit
Reviewed 2026-09-27 against https://tncsc.odoo.thedomainnest.com and the current repository.
## Scope and limits
Read-only review of all 12 seeded public pages, login, school registration, benefit directory, contact confirmation and the three event destinations linked from Home. Browser checks covered visible navigation on Home, Membership Registration and Summer Picnic. No registrations, payments, contact messages, password resets or login submissions were made. A successful page response does not establish that its submission/payment flow works.
## Main findings
- **Member Login is absent from live HTML**, not hidden by CSS. Live CSS contains `.tncsc-member-login`, but none of the 11 custom-navigation pages contains the generated button. Live titles also lack the new explicit titles. The assets and active database views are not in sync. Check the deployed revision, upgrade `tncsc_deployment` in the database serving this domain, and inspect active inherited/website-specific page views if it persists. The precise reason requires database access. The previous browser-injection tests proved the proposed markup/style worked, not that production loaded it.
- **Become A Member and Sign Up go to `/contact`.** `/membership/registration` exists but is an informational page, with no membership application form. Existing membership controllers support existing-member portal/renewal/card operations, not new public membership enrollment.
- **Register Event goes to `/contact`.** Existing event-specific pages can be reused for booking rather than creating another generic event-registration page.
- **View Event and one Home Book Now link are hardcoded to the Summer Picnic presentation page.** Its Add To Cart is only an anchor to `/contact`; it does not add a ticket/product to a cart.
- **School registration already exists** at `/school/register` with parent, student and class steps. Its first page returns HTTP 200. Completion was not submitted.
- **Anonymous `/my` returns HTTP 500** in this review. The explicit `/web/login?redirect=/my` page loads, but a successful post-login portal session was not tested. Inspect server logs and test with a portal account before calling the member-login flow complete.
- **Custom footer social icons use generic platform homepages**, despite configured TNCSC social URLs in the company/website seed data.
- Home's **All/Event filters have `href="#"`** with no filter wiring in the page template. These need actual filtering or meaningful links; no new page is necessary.
- The stock header/footer markup still contains demo phone/email and placeholder links, but browser checks found those stock sections hidden on the sampled custom pages. Do not count those as visible custom-menu links. Review other layouts that still use the stock footer separately.
## Primary action map
| Source | Button/link | Current destination | Recommended outcome |
|---|---|---|---|
| Custom menus | Member Login | Missing live; source override points to `/web/login?redirect=/my` | Load/fix the existing override and verify the portal; no new login page |
| Home | Learn More | `/about` | Keep |
| Home | Join TNCSC Today | `/membership` | Keep as information, or link directly to application if intended |
| Home | Explore Our Community / Start Learning Today | `/tamil-school` | Keep learning link; rename or reconsider the broader community label |
| About | Learn More | `/contact` | Clarify as Contact Us or choose the intended information page |
| Membership Benefits | Become A Member | `/contact` | Send to `/membership/registration` once that page has a working application flow |
| Membership Registration | Sign Up | `/contact` | Build the membership application on this existing URL |
| Events | Register Event | `/contact` | Link each event to its real event registration page |
| Custom menus and Home feature | View Event / Book Now | `/product/tncsc-summer-picnic-2026` | Replace hardcoded feature with the selected/current event or link to `/event` |
| Summer Picnic presentation | Add To Cart | `/contact` | Reuse actual event ticket registration/payment; remove misleading cart label until connected |
| Home event cards | Book Now | Three real `/event/<slug>` routes | Pages load; verify event dates, ticket availability and checkout |
| Tamil School | Tamil student-registration buttons | `/school/register` | Existing multi-step flow; test completion and invoice handling |
| Sponsors | See Member Benefits | `/benefits` | Existing benefit-centres directory, distinct from `/membership/benefits` |
| Contact | Submit Now | POST `/website/form/`, model `mail.mail` | Existing contact form; verify delivery and validation without confusing it with membership |
| Contact form success | Confirmation | `/contactus-thank-you` | Existing page returns 200; no new page needed |
| Custom footer | Facebook / YouTube / Instagram | Platform homepages | Connect the organization's configured profiles |
| Home | All / Event | `#` | Implement filters or replace with `/event` navigation |
## Existing event destinations
| Link from Home | Resolved live destination | Result |
|---|---|---|
| `/event/pongal-celebration-4` | `/event/pongal-celebration-4/register` | HTTP 200 |
| `/event/tamil-new-year-festival-3` | `/event/tamil-new-year-festival-3/page/home-tamil-new-year-festival` | HTTP 200; event home rather than direct registration |
| `/event/tncsc-s-summer-picnic-2026-1` | `/event/tncsc-s-summer-picnic-2026-1/register` | HTTP 200 |
## Pages/flows actually needed
1. Extend the existing `/membership/registration` page into a real application: membership tier selection, applicant/family details as appropriate, account access, approval/payment handling and confirmation. A new parallel information page is unnecessary. Decide whether applications require staff approval before implementing activation/payment rules.
2. Repair/load Member Login and verify `/my` plus `/my/membership`. These pages/routes exist; do not build a second login system.
3. Connect event CTAs to existing event registration/ticketing and validate payment/confirmation. A separate shop/cart is only needed if TNCSC also intends to sell products independently of events.
4. Reuse and validate school registration and contact confirmation. No replacement pages are needed based on this review.
5. Clean up generic social links and placeholder filters. If legal/privacy links will be displayed, supply actual policy content and routes; the current stock links are placeholders.
## Contact form observations
The form declares `/website/form/` and `mail.mail`, with a configured company email destination and success redirect. The visible arithmetic prompt (`2+17=?`) has an input without a name; the template does not provide corresponding validation. Its delivery, spam controls and field requirements need a focused form test. This audit did not send a message.
## Complete custom-page anchor inventory
Repeated labels pointing to the same URL are grouped per page. This inventory is from the source templates; the live checks above establish availability of the main destinations. Shared Member Login is added via inherited templates and is listed separately above. `#` for dropdowns/interactive controls must be distinguished from missing page destinations. Social links are intentionally included.
### view_page_home
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us / Learn More | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Join TNCSC Today / Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Explore Our Community / Start Learning Today / Tamil Class | `/tamil-school` |
| Contact | `/contact` |
| Book Now / View Event | `/product/tncsc-summer-picnic-2026` |
| All / Event | `#` |
| Book Now | `/event/#{ slug(upcoming_event) }` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
### view_page_about
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Contact / Learn More | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_tamil_nadu
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Contact | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_board
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Contact | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_membership
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Contact | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_membership_benefits
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Become A Member / Contact | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_membership_registration
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Contact / Sign Up | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_events
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Contact / Register Event | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_product_summer_picnic
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Add To Cart / Contact | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_tamil_school
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Contact | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| தமிழ் வகுப்புகள் 2026 - 27 - மாணவர் பதிவு | `/school/register` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |
### view_page_sponsors
| Label | Destination |
|---|---|
| See Member Benefits | `/benefits` |
### view_page_contact
| Label | Destination |
|---|---|
| Home | `/` |
| About + / About Us | `/about` |
| Tamil Nadu | `/about/tamil-nadu` |
| Board Of Directors | `/about/board-of-directors` |
| Events | `/event` |
| Membership / Membership + | `/membership` |
| Membership Benefits | `/membership/benefits` |
| Membership Registration | `/membership/registration` |
| Tamil Class | `/tamil-school` |
| Contact | `/contact` |
| View Event | `/product/tncsc-summer-picnic-2026` |
| [image/icon] | `mailto:#{env.company.email or 'support@tncsc.ca'}` |
| Facebook | `https://facebook.com` |
| YouTube | `https://youtube.com` |
| Instagram | `https://instagram.com` |
| Back to top | `#wrap` |