19 — Feature inventory
A "where does X live?" map for the major features. Useful for triaging incoming bugs, planning changes, and finding analogous features to copy from.
Pages are listed under pages/_accid/ (the authenticated, account-scoped tree) unless explicitly marked.
Authentication & onboarding surface
| Feature |
Pages |
Components / store |
Backend |
| Login (email/password) |
pages/index.vue |
LoginModal.vue |
/webauthenticate, /me |
| Forgot password |
pages/forgot_password/, pages/reset/ |
— |
/sendForgotPasswordResetLink |
| Password setup |
pages/password_setup/ |
— |
(set via store actions) |
| Social login |
pages/socialAuth/, pages/callback/ |
— |
/socialRegister, /linkedInRegister, /twitterRegister, /auth/tiktokRegister |
| MFA |
(inline) |
— |
/sendMFA, /MFAauthenticate |
| Onboarding |
subjects_services/, Organisationprofile/, goals_objectives/, chaptername/, brandkit/, payment/ |
mixins/onboardingNavigation.js, store/onboarding.js |
/getonboardingtype, /auth/getOnboardingDetails, /auth/getCompanyData, … |
| Email verification |
pages/heartbeat, pages/special_offer/ |
— |
/mailVerificationAccepted |
| Invitation acceptance |
invitation landing pages |
— |
/AcceptOrRejectInvite, /getinvtokeninfo, /updateUserInvite |
See 03-auth-and-sessions.md and 15-onboarding-flow.md.
Account, members, and team management
| Feature |
Pages |
Components |
Backend |
| Account switching |
(inline in default layout) |
AccountSwitcher.vue |
/auth/getuaccounts, /addOrUpdateDefaultAccount |
| Members / team |
userSetting/ |
(member-list components in userSetting/) |
/userlist, /addOrUpdateAccountMembers, /UpdateAccountMembersactive |
| Invitations |
userSetting/ |
— |
/getAllcreateInviteUserCorp, /addOrUpdateUserInvitationCorp, /DeleteInviteUsercorp |
| Owner profile |
userprofile/, Organisationprofile/ |
— |
/auth/getaccountowner, /auth/getOwnerPersonalDetails |
| Account settings |
userSetting/ |
(settings components in userSetting/) |
/auth/getSetting, /auth/addOrUpdateSetting |
| Impersonation |
(admin-side; verify) |
impersonation banner in default.vue |
(admin-only endpoints) |
See 12-permissions-and-roles.md.
Content planner
The product's primary surface.
| Feature |
Pages |
Components |
Backend |
| Calendar view |
contentplanner/index.vue |
Calender/Calender.vue (FullCalendar wrapper), helpers/helper.js → calStatus |
/auth/getpost, /auth/getApprovedDates, /auth/getSchedulingStatus |
| Post detail / inline edit |
contentplanner/_id/_id/ |
editPostModal.vue, ContentEditModal.vue, updateSPostModal.vue |
/auth/userScheduleArticle, /auth/rescheduleArticle |
| Content approval |
(inline modal) |
approvalModal.vue |
/auth/approveSkeletonPost, /auth/approveBrandPositioning, /auth/approveObjective |
| Holiday/event posts |
(inline modal) |
HolidaySelectionModal.vue |
/auth/getEventposts, /auth/getALLEventposts, /auth/scheduleEventposts |
| Bulk actions |
(inline modal) |
BulkActionsModal.vue |
(multiple) |
| Reschedule |
(inline modal) |
Reschedulearticlemodal.vue, ScheduleArticleModal.vue |
/auth/rescheduleArticle |
| Post status |
(inline) |
helpers/helper.js → renderPostStatus, calStatus |
(status comes from backend) |
See 13-post-lifecycle.md.
Editors (Polotno-backed)
| Editor variant |
Pages |
Notes |
| Post editor |
posteditor/_id/ |
Standard image post. |
| Carousel editor |
carouseleditor/_id/ (and legacy carouselcpeditor, carouseleditor1) |
Multi-image Instagram-style carousel. |
| User-media editor |
usereditor/_id/, usermediaditor/_id/ |
User-uploaded media editor. |
| Custom editor |
cuseditor/_id/ |
Custom-content editor variant. |
| Shared post editor |
sharedposteditor/_id/ |
For posts shared from another user. |
| Template editor |
templateeditor/ |
Editing reusable templates rather than posts. |
| Generic editor |
pages/editor/_id/ |
Legacy non-_accid variant. |
All variants import { createEditor } from '../../../../polotno-bundle' and mount into a <div id="polotno">. See 06-polotno-integration.md.
Content creation
| Feature |
Pages / surfaces |
Components |
Backend |
| Create content |
(inline modal) |
createContentModal.vue, CarouselPostModal.vue, brandPostModal.vue |
/addOrUpdateContent |
| AI text generation |
(inside editor and inline) |
(in polotno-editor/aiContent/) |
Gemini, Vertex AI |
| AI image generation |
(inside editor) |
(in polotno-editor/aiImage.js) |
Stability AI, Leonardo AI |
| Reel ideas |
(inline modal) |
ReelIdeasModal.vue |
/auth/getAllReelIdeasFolder, /uploadReelVideo |
| Topic suggestion |
topics/ |
ContentIdeas/ |
/generate-topics-suggestion, /auth/getRecommendedTopics |
| Video preview |
(inline modal) |
VideoModal.vue, PreviewModal.vue |
— |
| File upload |
(inline modal) |
UploadModal.vue (FilePond) |
/auth/uploadAccountsAssets, /uploadCsvFile, /auth/uploadLogo |
Library, designs, and templates
| Feature |
Pages |
Components |
Backend |
| My library |
my_library/ |
libraryModal.vue |
/auth/getAllLibrary, /auth/getMyLibraryPost/<page> |
| My designs |
my_designs/ |
— |
(design-listing endpoints) |
| My articles |
(inline) |
MyArticles* components |
/auth/getMyListPosts |
| Folders |
(inline) |
NewFolderModal.vue, ArchiveModal.vue |
/addOrUpdateUserFolder, /archiveContentFolder |
| Shared images / templates |
(inline) |
(in library/folder UI) |
/auth/getAllSharedImages, /auth/getAllSharedFolderImages, /auth/getAllSharedFolderTemps |
Brand kit
| Feature |
Pages |
Components |
Backend |
| Brand kit |
brandkit/ |
tempBrandModal.vue, tempSetModal.vue |
/auth/getLogo, /auth/uploadLogo, /auth/savecolorset, /auth/saveFont, /auth/brandTemplateSet |
| Brand positioning |
(inside brand kit / onboarding) |
(inline) |
/auth/getBrandPositioning, /auth/getAiBrandPositioning, /auth/approveBrandPositioning |
| Organisation profile |
Organisationprofile/ |
(inline) |
/auth/getCompanyData, /auth/AICompanyData, /process-organization-profile |
| Subjects & services |
subjects_services/ |
(inline) |
/auth/getRecommendedTopics, /auth/chooseRecomSubject |
| Goals & objectives |
goals_objectives/ |
(inline) |
/getGoalsObjects, /auth/getAiObjective, /auth/approveObjective |
| Chapter (BNI) |
chaptername/ |
(inline) |
/generate-chapter-profile, /update-chapter-profile, /auth/approveChapterData |
Social account management
| Feature |
Pages |
Components |
Backend |
| Connect social accounts |
social_accounts/, userSetting/#social_media_accounts |
(inline) |
/sociallink, /auth/sociallinkstatus, /socialreconnect |
| Provider tokens |
(background) |
— |
/tokenRefresh, /auth/socialAccountStatus |
See 08-integrations.md → Social network providers.
Dashboards & analytics
| Sub-section |
Pages |
Components |
Backend |
| Overview |
dashboard/overview/ |
Dashboard/NewDashboard.vue, OldDashboard.vue, Dashboard/charts/ |
(dashboard-data endpoints; verify) |
| ROI |
dashboard/roi/ |
Dashboard/roi/ |
(ROI endpoints) |
| Reach |
dashboard/reach/ |
Dashboard/reach/ |
store/reach/ |
| Leaderboard |
dashboard/leaderboard/ |
Dashboard/leaderboard/ |
store/leaderboard/ |
| Hashtag analytics |
dashboard/hashtag-analytics/ |
Dashboard/hashtaganalytics/ |
(hashtag endpoints) |
| Action items |
dashboard/action-items/ |
— |
(action-item endpoints) |
The Charts/ component subdirectory has the chart wrappers (LineChart.vue, PieChart.vue, ChartLegendItem.vue).
Billing
| Feature |
Pages |
Components |
Backend |
| Plan selection |
plan/, payment/, billing/ |
(inline) |
(plan endpoints + helpers/helper.js → getPlanList) |
| Stripe checkout |
(inline) |
paymentModal.vue |
/auth/createpaymentintent + Stripe.js |
| Paddle checkout |
(inline) |
(Paddle inline) |
/auth/getPaddleSubData, /auth/paddleManagementUrl |
| Billing info |
billing/ |
(inline) |
/auth/getBillingInfo, /auth/addOrUpdateUserBillingInfo |
| Subscription state |
(background) |
— |
/auth/getSubscriptions (cached via api/fetchSubscription) |
| Affiliate |
(background) |
— |
/auth/impact-conversion, /auth/cancel-impact-conversion, FirstPromoter (fpr) |
Network features
| Feature |
Pages |
Components |
Notes |
| Someli Network |
pages/someli_network/ |
VueNetworkIdentify.vue, related components |
Layout: someliNetwork.vue. Verify product scope with the team. |
| Circle Network |
(integrated into content planner) |
CircleNetworkModal.vue, helpers/circleNetworkHelper.js, services/circleNetworkService.js, plugins/circleNetwork.js |
Distinct from Someli Network. Verify with the team. |
Communication / chat
| Feature |
Pages |
Components |
Backend |
| Chat (in-app) |
(inline) |
chatModal.vue, Chatbot.vue |
/getMemberschatMessages, /addOrUpdateConversation |
| Chaskiq support widget |
(background) |
(registered globally) |
Chaskiq SDK. Currently commented out in head.js — verify if active. |
| CRM webhook |
(background) |
— |
CRM_webhook_url — verify |
Settings & user pages
| Feature |
Pages |
Notes |
| User settings |
userSetting/ |
Multi-tab: profile, social media accounts, members, billing, etc. Reads accountdetails cookie heavily. |
| Change password |
change_password/ |
— |
| Categories |
categories/ |
/getCategories, /addupdateCategories |
| Topics / industry news |
topics/, industry_news/ |
/auth/getRecommendedTopics, industry-news endpoints |
| Help center |
help_center/ |
— |
Public / marketing surface
| Feature |
Pages |
Layout |
| Landing / login |
pages/index.vue |
(default for the page) |
| Privacy policy |
pages/privacy/ |
fourOhOne or default |
| Terms |
pages/terms_and_conditions.vue |
fourOhOne |
| Special offer |
pages/special_offer/ |
specialOffer |
| Corporate offer |
pages/corporate_offer/ |
specialOffer |
| FB deletion status |
pages/fbDeletionStatus/ |
(Facebook compliance: data-deletion request status page) |
| Pay (legacy) |
pages/pay.vue |
(legacy; auth: false) |
Shared chrome / utility components
| Component |
Purpose |
Sidebars/ |
Sidebars used in different layouts |
Cards/ |
Reusable card components |
Buttons/ |
Reusable button variants |
ColorSelect/ |
Colour pickers |
Layout/ |
Section containers (EaMainSection.vue) |
Sidebar/ |
Inner sidebar pieces |
BookCallDropdown.vue |
Sales / book-a-call CTA dropdown |
Chatbot.vue |
Chatbot widget |
ContextMenu.vue |
Right-click context menu |
ExplorerContent.vue |
Generic explorer / drill-down browser |
Where to start when triaging
When a bug arrives:
- Identify the surface in the screenshot or URL. Map URL → page path under
pages/_accid/.
- Find the matching row in this doc. That gives you the components and backend endpoints.
- Check the Vuex module for the feature (look in
store/<feature>/ or store/api.js).
- Reproduce locally, then read the Network tab to identify which endpoint fired.
- If the issue is in
helpers/helper.js, the bug usually shows up across many surfaces simultaneously — see 13-post-lifecycle.md and 17-helpers.md.
When building a new feature:
- Find the closest analogue in this doc.
- Copy its structure (page → component → modal → store action → endpoint).
- Add the new endpoint to
14-api-catalog.md.
- Add the new feature to this doc so the next person can find it.