Docs
Lola Kifuliiru
Applications
Lola Kifuliiru
Overview
IntroductionArchitectureDevelopment setup
Kifuliiru FM integrationContent types and feed tabsHashtags and tagsAI moderation and language helperFeature planIn-app guide (developer notes)
Platform integration
HomeBrowse applications

© 2026 Wekify LLC · Kifuliiru Lab

Homellms.txtkifuliiru.com

GuidesHashtags and tags

Hashtags and tags

Current hashtag behaviour in Lola.

How tags work today in lola-kifuliiru-web, what is intentionally out of scope for now, and what we plan to add. Task tracking: LOLA-FEATURE-PLAN.md → social-hashtags-001.


Summary

Tags are partially supported. A hashtag is plain text inside a post body (#Kifuliiru). The app can render those segments as links and search for them as text. There is no dedicated tags table, tag index, tag page, or composer UI for adding tags.

The desktop right rail shows a small curated list of community tags as shortcuts into search.


What we have today

1. Hashtags in post content

When a post contains #word, the feed renders it as a clickable link.

| Piece | Location | |-------|----------| | Parser + links | src/components/feed/PostContentWithHashtags.tsx | | Used in feed cards | src/components/feed/PostCard.tsx | | Used in post detail | src/components/feed/PostDetailDialog.tsx |

Rules (current parser):

  • Pattern: # followed by Unicode letters, numbers, or _ (e.g. #Kifuliiru, #Bafuliiru, #umuundu).
  • Link target: /?q=%23{tag} (home URL with q query param).
  • Tags are not extracted or saved separately at publish time.

2. Sidebar tag chips (desktop right rail)

Below Language Pulse, the right sidebar shows a Tags section.

| Piece | Location | |-------|----------| | UI | src/components/lola/LolaSidebarTags.tsx | | Curated list + link helper | src/lib/lola-sidebar-tags.ts | | Shell placement | src/components/lola/shell/LolaShellDesktopRail.tsx |

Curated tags (as of this doc):

  • Kifuliiru
  • Abaandu
  • umuundu
  • imikolwa
  • Bafuliiru

Each chip links to the same URL shape as in-post hashtags: /?q=%23{tag}.

Copy: title key lola.sidebar.tags — English and Kifuliiru use Tags; French Étiquettes; Swahili Lebo.

3. Search (how tag links resolve)

Clicking a hashtag or sidebar chip does not filter the main feed timeline. It sets ?q= on the home route, which opens the search dialog and runs a text search.

| Piece | Location | |-------|----------| | Search dialog | src/components/lola/LolaSidebarSearch.tsx | | Post search | feedService.searchActivities() in src/services/feed-service.ts | | Empty state copy | lola.no_search_results in src/lib/translations.ts |

Search behaviour:

  • Reads q from URL (searchParams.get('q')).
  • Debounced search across public feed_activities fields: content, content_kifuliiru, content_kiswahili, content_french, content_english (case-insensitive ilike).
  • Also searches people via userService.searchUsers().
  • A query like #Kifuliiru matches posts whose body contains that literal substring (including the # if the author typed it).

4. Discover page (related, not tags)

/explore has static “search idea” chips (e.g. Kifuliiru, translation) that link to /explore?q=…. Those are plain text search hints, not the same curated list as the right-rail tags and not hashtag URLs.


What we do not have yet

| Gap | Notes | |-----|--------| | Tags table / index | No tags or post_tags in Supabase; nothing indexed on publish. | | Tag pages | No /tags/Kifuliiru or dedicated tag feed view. | | Feed filter by tag | Main timeline does not narrow when ?q=#tag is present; only the search overlay runs. | | Composer support | No tag picker, autocomplete, or validation in CreatePost. | | Trending / counts | No “how many posts use #imikolwa” or trending sidebar from real usage. | | Moderation / canonical tags | No approved tag list enforced in posts (sidebar list is editorial only). | | Mobile right rail | Tag chips are on the desktop right rail; mobile menu still uses other sidebar blocks (e.g. people suggestions on small screens). |

Feature plan status: social-hashtags-001 — Partial.


Content types and feed tabs (next major step)

Classifying posts with type tags (e.g. #Imyazi, #Umwazi → news) and topic tags (e.g. #imikolwa, #Bafuliiru) — then feed tabs for grouped browsing — is specified in LOLA-CONTENT-TYPES.md. That work adds capture into feed_activities.metadata on publish; this doc covers today’s text-only hashtags.


What we plan to have

Suggested phases (align with social-hashtags-001 and discovery work in LOLA-FEATURE-PLAN.md §3). Content types / tabs: see LOLA-CONTENT-TYPES.md.

Phase 1 — Better discovery (no schema change)

  • Clicking a tag filters the feed or opens a dedicated tag view (not only the search dialog).
  • Unify discover “search ideas” and right-rail tags where it makes sense.
  • Optional: strip leading # for search so #Kifuliiru and Kifuliiru behave the same.

Phase 2 — Structured tags (schema)

  • Tables such as tags + feed_activity_tags (names TBD).
  • On publish (or edit), parse hashtags from content and persist associations.
  • Tag pages with stable URLs and counts.
  • Sidebar chips driven by curated + usage (e.g. always show the five community tags; optionally surface trending).

Phase 3 — Composer and community

  • Composer: type # → suggest tags (from curated list + recent).
  • Optional: limit or highlight “official” community tags (Kifuliiru, Bafuliiru, etc.).
  • Analytics: tag usage in pulse/discovery (“what topics are growing”).

Authoring tags today (for contributors)

To make a post findable via tags now, authors should include the hashtag in the post text, for example:

∑Formula
Uyu mukolwa gwa Kifuliiru #imikolwa #Bafuliiru
```text

Sidebar chips and in-post links only help if that exact text (or close substring) appears in searchable content fields.

---

## Key files

| File | Role | |------|------| | `src/lib/lola-sidebar-tags.ts` | Curated tag list + search URL helper | | `src/components/lola/LolaSidebarTags.tsx` | Right-rail Tags UI | | `src/components/feed/PostContentWithHashtags.tsx` | In-post `#` rendering | | `src/components/lola/LolaSidebarSearch.tsx` | `?q=` → search dialog | | `src/services/feed-service.ts` | `searchActivities()` text search | | `src/lib/translations.ts` | `lola.sidebar.tags`, `lola.no_search_results` |

---

## Related docs

- [LOLA-CONTENT-TYPES.md](/lola-kifuliiru/guides/content-types) — type vs topic tags, `#Imyazi` / `#Umwazi`, metadata, feed tabs (planned)
- [LOLA-FEATURE-PLAN.md](/lola-kifuliiru/guides/feature-plan) — `social-hashtags-001`, `social-content-types-001`, `social-feed-tabs-001`
- Language Pulse / sidebar layout — pulse and tags share the desktop right rail (`LolaShellDesktopRail`)
PreviousContent types and feed tabsNextAI moderation and language helper

On this page

  • Summary
  • What we have today
  • 1. Hashtags in post content
  • 2. Sidebar tag chips (desktop right rail)
  • 3. Search (how tag links resolve)
  • 4. Discover page (related, not tags)
  • What we do not have yet
  • Content types and feed tabs (next major step)
  • What we plan to have
  • Phase 1 — Better discovery (no schema change)
  • Phase 2 — Structured tags (schema)
  • Phase 3 — Composer and community
  • Authoring tags today (for contributors)