refactor(community): rename Community Connections → Community Ecology
Some checks failed
Test / vitest (push) Successful in 11m42s
Test / playwright (push) Failing after 9m27s
Test / visual (push) Failing after 9m53s
Test / Notify on failure (push) Successful in 2s

Simplify the feature to pure discovery (filter by topic, see matching
members, copy Slack handle). Drop the connection request/confirm flow
entirely — Connection model, 7 API endpoints, useConnections composable,
and TagInput component deleted.

- Rename communityConnections → communityEcology in schema, API, pages
- Delete legacy fields: offering, lookingFor, peerSupport
- New /ecology page, /api/ecology/suggestions, community-ecology.patch
- Nav: "Connections" → "Ecology", remove pending-count badge
- Fix auth/member.get.js missing craftTags + communityEcology
- Add community_ecology_updated activity log type
- Expose slackHandle conditionally when offerPeerSupport is true
- Add migration script at scripts/migrate-to-ecology.js (run before deploy)
This commit is contained in:
Jennie Robinson Faber 2026-04-09 09:07:15 +01:00
parent 9577929e0d
commit 0b3896d984
33 changed files with 1002 additions and 2635 deletions

View file

@ -69,29 +69,10 @@ const memberSchema = new mongoose.Schema({
website: String,
other: String,
},
offering: {
text: String,
tags: [String],
},
lookingFor: {
text: String,
tags: [String],
},
showInDirectory: { type: Boolean, default: true },
// Peer support settings
peerSupport: {
enabled: { type: Boolean, default: false },
skillTopics: [String], // Auto-populated from offering.tags, editable
supportTopics: [String], // Curated conversational/emotional support topics
availability: String,
personalMessage: String,
slackUsername: String,
slackDMChannelId: String, // DM channel ID for direct messaging
},
craftTags: [String],
communityConnections: {
communityEcology: {
topics: [
{
tagSlug: String,
@ -142,22 +123,12 @@ const memberSchema = new mongoose.Schema({
enum: ["public", "members", "private"],
default: "members",
},
offering: {
type: String,
enum: ["public", "members", "private"],
default: "members",
},
lookingFor: {
type: String,
enum: ["public", "members", "private"],
default: "members",
},
craftTags: {
type: String,
enum: ["public", "members", "private"],
default: "members",
},
communityConnections: {
communityEcology: {
type: String,
enum: ["public", "members", "private"],
default: "members",
@ -167,8 +138,6 @@ const memberSchema = new mongoose.Schema({
notifications: {
events: { type: Boolean, default: true },
updates: { type: Boolean, default: true },
peerRequests: { type: Boolean, default: true },
connectionRequests: { type: Boolean, default: true },
},
inviteEmailSent: { type: Boolean, default: false },