├── .nvmrc ├── WARP.md ├── app ├── pkg │ ├── web │ │ ├── testdata │ │ │ ├── empty.js │ │ │ ├── logo1.png │ │ │ ├── logo2.jpg │ │ │ ├── logo3.gif │ │ │ ├── logo4.png │ │ │ ├── logo5.png │ │ │ ├── favicon.ico │ │ │ ├── logo3-200w.gif │ │ │ └── assets.json │ │ ├── metrics.go │ │ └── response.go │ ├── dbx │ │ ├── testdata │ │ │ ├── migration_failure │ │ │ │ ├── 210001010000_create_err.sql │ │ │ │ └── 210001010001_create_ok.sql │ │ │ └── migration_success │ │ │ │ ├── 210001010001_delete.sql │ │ │ │ └── 210001010000_create.sql │ │ ├── lock.go │ │ └── types.go │ ├── tpl │ │ ├── testdata │ │ │ ├── base.html │ │ │ └── echo.html │ │ ├── template_test.go │ │ └── text.go │ ├── csv │ │ └── testdata │ │ │ ├── empty.csv │ │ │ ├── one-post.csv │ │ │ └── more-posts.csv │ ├── crypto │ │ ├── md5.go │ │ ├── sha512.go │ │ ├── md5_test.go │ │ └── sha512_test.go │ ├── rand │ │ └── random_test.go │ ├── errors │ │ └── path.go │ └── log │ │ └── level.go ├── services │ ├── blob │ │ └── testdata │ │ │ ├── file3.txt │ │ │ ├── file.txt │ │ │ └── file2.png │ ├── oauth │ │ └── custom.go │ ├── sqlstore │ │ └── postgres │ │ │ ├── billing_test.go │ │ │ └── event.go │ └── email │ │ └── smtp │ │ └── auth_login.go ├── models │ ├── dto │ │ ├── user.go │ │ ├── http.go │ │ ├── billing.go │ │ ├── blob.go │ │ ├── userlist.go │ │ ├── upload.go │ │ ├── props_test.go │ │ ├── email.go │ │ ├── props.go │ │ ├── oauth.go │ │ └── webhook.go │ ├── cmd │ │ ├── event.go │ │ ├── system.go │ │ ├── mention_notification.go │ │ ├── blob.go │ │ ├── reaction.go │ │ ├── email.go │ │ ├── comment.go │ │ ├── vote.go │ │ ├── http.go │ │ ├── log.go │ │ ├── attachment.go │ │ ├── post.go │ │ ├── tag.go │ │ ├── billing.go │ │ ├── webhook.go │ │ ├── userlist.go │ │ ├── notification.go │ │ ├── oauth.go │ │ └── user.go │ ├── query │ │ ├── system.go │ │ ├── email.go │ │ ├── vote.go │ │ ├── attachment.go │ │ ├── blob.go │ │ ├── comment.go │ │ ├── billing.go │ │ ├── tag.go │ │ ├── notification.go │ │ ├── user.go │ │ └── webhook.go │ ├── enum │ │ ├── subscriber.go │ │ ├── oauth.go │ │ ├── email_kind.go │ │ └── tenant_status.go │ └── entity │ │ ├── tag.go │ │ ├── reaction.go │ │ ├── vote.go │ │ ├── mention_notification.go │ │ ├── mention.go │ │ ├── comment.go │ │ ├── email_verification.go │ │ └── notification.go ├── cmd │ ├── signals_windows.go │ ├── routes_test.go │ ├── signals_unix.go │ └── migrate.go ├── middlewares │ ├── locale.go │ ├── chain.go │ ├── cors.go │ ├── cache.go │ ├── panic.go │ ├── noindex.go │ ├── cors_test.go │ ├── session.go │ ├── auth.go │ ├── maintenance.go │ └── panic_test.go ├── metrics │ └── metrics_http.go ├── handlers │ ├── backup.go │ └── tag.go ├── actions │ ├── actions.go │ └── messages.go └── jobs │ ├── lock_expired_tenants_job_test.go │ ├── purge_notifications_job.go │ └── purge_notifications_job_test.go ├── scripts ├── kill-dev.sh └── git-prune-local.sh ├── Procfile ├── public ├── pages │ ├── ShowPost │ │ ├── components │ │ │ ├── PostStatus.tsx │ │ │ ├── ShowComment.scss │ │ │ ├── MentionSelector.scss │ │ │ ├── MentionSelector.tsx │ │ │ └── TagListItem.tsx │ │ └── index.ts │ ├── Home │ │ ├── index.ts │ │ ├── components │ │ │ ├── PostFilter.scss │ │ │ ├── SimilarPosts.scss │ │ │ └── PostsContainer.scss │ │ └── Home.page.scss │ ├── Error │ │ ├── index.ts │ │ ├── Error410.page.tsx │ │ ├── Error403.page.tsx │ │ ├── Error401.page.tsx │ │ ├── NotInvited.page.tsx │ │ ├── Error404.page.tsx │ │ ├── Error500.page.tsx │ │ └── Maintenance.page.tsx │ ├── Legal │ │ ├── index.ts │ │ └── Legal.page.tsx │ ├── SignUp │ │ └── index.ts │ ├── OAuthEcho │ │ └── index.ts │ ├── MySettings │ │ └── index.ts │ ├── DesignSystem │ │ ├── index.ts │ │ └── DesignSystem.page.scss │ ├── MyNotifications │ │ └── index.ts │ ├── SignIn │ │ ├── LoginEmailSent.page.scss │ │ ├── index.ts │ │ └── CompleteSignInProfile.page.scss │ └── Administration │ │ └── components │ │ ├── webhook │ │ ├── WebhookFailInfo.scss │ │ ├── WebhookForm.scss │ │ └── WebhookListItem.scss │ │ ├── AdminBasePage.scss │ │ └── SideMenu.scss ├── jest.assets.ts ├── components │ ├── layout │ │ ├── index.tsx │ │ └── Divider.tsx │ ├── ThemeSwitcher.scss │ ├── common │ │ ├── HoverInfo.scss │ │ ├── AvatarStack.scss │ │ ├── Avatar.scss │ │ ├── PoweredByFider.scss │ │ ├── form │ │ │ ├── DisplayError.scss │ │ │ ├── MultiImageUploader.scss │ │ │ ├── Form.scss │ │ │ ├── ImageUploader.scss │ │ │ ├── RadioButton.scss │ │ │ ├── Checkbox.scss │ │ │ └── TextArea.scss │ │ ├── DevBanner.tsx │ │ ├── DevBanner.scss │ │ ├── Money.tsx │ │ ├── Hint.scss │ │ ├── Avatar.tsx │ │ ├── PageTitle.tsx │ │ ├── UserName.scss │ │ ├── AvatarStack.tsx │ │ ├── Markdown.tsx │ │ ├── Loader.tsx │ │ ├── Message.scss │ │ ├── PoweredByFider.tsx │ │ ├── Icon.tsx │ │ ├── HoverInfo.tsx │ │ └── SignInControl.scss │ ├── Reactions.scss │ ├── index.tsx │ ├── ShowPostStatus.tsx │ ├── NotificationIndicator.scss │ ├── ReadOnlyNotice.tsx │ └── ShowTag.scss ├── services │ ├── testing │ │ ├── index.ts │ │ ├── modal.ts │ │ ├── http.ts │ │ └── fider.ts │ ├── device.ts │ ├── actions │ │ ├── index.ts │ │ ├── billing.ts │ │ ├── invite.ts │ │ ├── image.ts │ │ ├── notification.ts │ │ └── user.ts │ ├── jwt.ts │ ├── notify.ts │ ├── analytics.ts │ ├── index.ts │ ├── i18n.ts │ ├── cache.spec.ts │ ├── jwt.spec.ts │ └── navigator.ts ├── assets │ ├── styles │ │ ├── variables │ │ │ ├── _sizing.scss │ │ │ ├── _spacing.scss │ │ │ └── _text.scss │ │ ├── utility │ │ │ ├── colors.scss │ │ │ ├── outline.scss │ │ │ ├── page.scss │ │ │ ├── sizing.scss │ │ │ └── grid.scss │ │ ├── index.scss │ │ ├── utility.scss │ │ └── tooltip.scss │ └── images │ │ ├── heroicons-check.svg │ │ ├── heroicons-x.svg │ │ ├── heroicons-menu.svg │ │ ├── heroicons-selector.svg │ │ ├── heroicons-search.svg │ │ ├── heroicons-plus.svg │ │ ├── heroicons-check-circle.svg │ │ ├── heroicons-exclamation.svg │ │ ├── heroicons-clock.svg │ │ ├── heroicons-download.svg │ │ ├── heroicons-information-circle.svg │ │ ├── heroicons-pluscircle.svg │ │ ├── heroicons-x-circle.svg │ │ ├── heroicons-code.svg │ │ ├── fa-caretup.svg │ │ ├── heroicons-pencil-alt.svg │ │ ├── heroicons-dots-horizontal.svg │ │ ├── heroicons-at.svg │ │ ├── heroicons-bold.svg │ │ ├── heroicons-exclamation-circle.svg │ │ ├── heroicons-italic.svg │ │ ├── heroicons-photograph.svg │ │ ├── heroicons-rss.svg │ │ ├── heroicons-chat-alt-2.svg │ │ ├── heroicons-arrowleft.svg │ │ ├── heriocons-underline.svg │ │ ├── heroicons-paperclip.svg │ │ ├── heroicons-volume-on.svg │ │ ├── heroicons-link.svg │ │ ├── heroicons-bell.svg │ │ ├── heroicons-moon.svg │ │ ├── heroicons-speakerphone.svg │ │ ├── heroicons-light-bulb.svg │ │ ├── heroicons-play.svg │ │ ├── heroicons-sun.svg │ │ ├── heroicons-eye.svg │ │ ├── heroicons-filter.svg │ │ ├── heroicons-shieldcheck.svg │ │ ├── heroicons-tagsolid.svg │ │ ├── heroicons-lightbulb.svg │ │ ├── heroicons-volume-off.svg │ │ ├── heroicons-orderedlist.svg │ │ ├── heroicons-bulletlist.svg │ │ ├── heroicons-smile.svg │ │ ├── heroicons-eyeslash.svg │ │ ├── heroicons-star.svg │ │ ├── heroicons-clipboard.svg │ │ ├── heroicons-inbox.svg │ │ ├── heroicons-duplicate.svg │ │ ├── heroicons-h2.svg │ │ ├── reaction-add.svg │ │ ├── heroicons-wrenchscrewdriver.svg │ │ ├── heroicons-h3.svg │ │ ├── heroicons-cog.svg │ │ ├── heroicons-sparkles-outline.svg │ │ ├── heroicons-strike.svg │ │ ├── heroicons-thumbsup.svg │ │ ├── cc-diners.svg │ │ └── heroicons-thumbsdown.svg ├── hooks │ ├── index.ts │ ├── use-timeout.ts │ └── use-cache.ts ├── models │ ├── billing.ts │ ├── index.ts │ └── notification.ts └── jest.setup.tsx ├── .eslintignore ├── favicon.png ├── etc ├── logo.png ├── homepage.png ├── fidergithub.png ├── fiderlogo.png ├── logo-small.png ├── browserstack.png ├── privacy.md └── terms.md ├── migrations ├── 201802231910_add_pg_trgm.up.sql ├── 201904091921_fix_api_users_role.sql ├── 201701281131_rename_domain.up.sql ├── 201702251620_add_tenant_cname.up.sql ├── 201707081055_set_cname_null.up.sql ├── 201707261949_set_cname_empty.up.sql ├── 201805230000_drop_supporters_column.up.sql ├── 201703172030_add_ideas_userid.up.sql ├── 202406111146_add_posts_user_id_index.sql ├── 202109052023_email_supressed_at.sql ├── 201801031643_original_id.up.sql ├── 201904022134_lowercase_emails.sql ├── 201712131842_unique_slug.up.sql ├── 201811071547_increase_link_size.sql ├── 202507161200_add_allowed_schemes.sql ├── 201709091228_create_email_verification_key_index.up.sql ├── 201703240709_remove_col_tenants.up.sql ├── 202109272130_system_settings.sql ├── 201709241236_add_tenant_status.up.sql ├── 201704112003_add_role_users.up.sql ├── 201703310824_remove_col_user_providers.up.sql ├── 201705132054_add_idea_status.up.sql ├── 201808192103_increase_key_size.sql ├── 201901072106_recreate_post_slug_index.sql ├── 201705191854_add_idea_slug.up.sql ├── 201805261834_add_user_status.up.sql ├── 202107031320_add_locale_field.sql ├── 202205082055_trusted_provider.sql ├── 201711181740_create_uniq_indexes.up.sql ├── 201705202300_add_idea_response.up.sql ├── 201805162034_add_custom_css.up.sql ├── 201804091842_add_is_private.up.sql ├── 201808181931_add_api_key_users.sql ├── 201707271826_new_tenant_settings.up.sql ├── 201812201644_migrate_autocert_to_blobs.sql ├── 202107211126_added_allowing_email_auth.sql ├── 201801152006_rename_signin_requests.up.sql ├── 201703172115_remove_col_defaults.up.sql ├── 201709141944_rename_email_verification.up.sql ├── 202504252031_add_is_feed_enabled.sql ├── 201805070759_add_logo_id.up.sql ├── 201810152035_add_comment_deleted.sql ├── 201701261850_create_tenants.up.sql ├── 201703310857_add_tenant_to_users.up.sql ├── 201704101854_add_ideas_number.up.sql ├── 201810022329_add_events.sql ├── 201803110836_edit_comment_columns.up.sql ├── 201806191904_create_logs.sql ├── 202507091200_add_prevent_indexing.sql ├── 201709241254_add_signin_request_name_expires_on.up.sql ├── 201703240710_create_comments.up.sql ├── 201712061924_unique_email.up.sql ├── 201812230904_user_avatar_type.sql ├── 202105161823_create_indexes.sql ├── 201702072040_create_ideas.up.sql ├── 201805061319_create_uploads.up.sql ├── 202108092243_create_webhooks.sql ├── 201709081837_create_email_verifications.up.sql ├── 201801152017_add_kind_email_verification.up.sql ├── 202109072130_paddle_fields.sql ├── 201901042021_create_tenants_billing.sql ├── 202410122105_create_reactions_up.sql ├── 201704181821_add_supporters.up.sql ├── 202510241300_add_tenant_providers.sql ├── 201812102208_create_blob_table.sql ├── 201901130830_attachments.sql ├── 201802071816_seed_subscribers_table.up.sql ├── 201702251213_create_users.up.sql ├── 201802241348_create_webnotification_tables.up.sql ├── 201808291958_rename_support_vote.sql ├── 201802061858_create_notification_tables.up.sql ├── 201711152138_create_tags.up.sql └── 202503202000_mentions_notifications.sql ├── .dockerignore ├── views ├── email │ ├── echo_test.html │ ├── invite_email.html │ ├── signup_email.html │ ├── change_emailaddress_email.html │ ├── delete_post.html │ ├── new_post.html │ └── new_comment.html └── ssr.html ├── .prettierrc ├── robots.txt ├── .github ├── ISSUE_TEMPLATE │ ├── another-issue.md │ ├── feature-request.md │ └── bug-report.md ├── PULL_REQUEST_TEMPLATE.md └── FUNDING.yml ├── tools.go ├── e2e ├── world.ts ├── features │ └── server │ │ ├── prometheus.feature │ │ └── http.feature ├── _init_.ts └── step_definitions │ └── show_post.steps.ts ├── .babelrc ├── .gitignore ├── main.go ├── air.conf ├── tsconfig.json ├── lingui.config.js ├── .example.env └── index.d.ts /.nvmrc: -------------------------------------------------------------------------------- 1 | v22.* 2 | -------------------------------------------------------------------------------- /WARP.md: -------------------------------------------------------------------------------- 1 | CLAUDE.md -------------------------------------------------------------------------------- /app/pkg/web/testdata/empty.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scripts/kill-dev.sh: -------------------------------------------------------------------------------- 1 | kill $(lsof -t -i :3000) -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: ./bin/fider migrate && ./bin/fider -------------------------------------------------------------------------------- /app/services/blob/testdata/file3.txt: -------------------------------------------------------------------------------- 1 | Hello World -------------------------------------------------------------------------------- /public/pages/ShowPost/components/PostStatus.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/pages/Home/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Home.page" 2 | -------------------------------------------------------------------------------- /app/services/blob/testdata/file.txt: -------------------------------------------------------------------------------- 1 | This is just a sample file! -------------------------------------------------------------------------------- /public/pages/Error/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Error.page" 2 | -------------------------------------------------------------------------------- /public/pages/Legal/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Legal.page" 2 | -------------------------------------------------------------------------------- /public/pages/SignUp/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./SignUp.page" 2 | -------------------------------------------------------------------------------- /public/jest.assets.ts: -------------------------------------------------------------------------------- 1 | const stub = {} 2 | export default stub 3 | -------------------------------------------------------------------------------- /public/pages/OAuthEcho/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./OAuthEcho.page" 2 | -------------------------------------------------------------------------------- /public/pages/ShowPost/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ShowPost.page" 2 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | ssr.js 3 | node_modules/ 4 | package-lock.json -------------------------------------------------------------------------------- /favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/favicon.png -------------------------------------------------------------------------------- /public/pages/MySettings/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./MySettings.page" 2 | -------------------------------------------------------------------------------- /etc/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/etc/logo.png -------------------------------------------------------------------------------- /public/pages/DesignSystem/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./DesignSystem.page" 2 | -------------------------------------------------------------------------------- /app/pkg/dbx/testdata/migration_failure/210001010000_create_err.sql: -------------------------------------------------------------------------------- 1 | create table foo; -------------------------------------------------------------------------------- /etc/homepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/etc/homepage.png -------------------------------------------------------------------------------- /migrations/201802231910_add_pg_trgm.up.sql: -------------------------------------------------------------------------------- 1 | CREATE EXTENSION IF NOT EXISTS pg_trgm; -------------------------------------------------------------------------------- /public/pages/MyNotifications/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./MyNotifications.page" 2 | -------------------------------------------------------------------------------- /etc/fidergithub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/etc/fidergithub.png -------------------------------------------------------------------------------- /etc/fiderlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/etc/fiderlogo.png -------------------------------------------------------------------------------- /etc/logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/etc/logo-small.png -------------------------------------------------------------------------------- /migrations/201904091921_fix_api_users_role.sql: -------------------------------------------------------------------------------- 1 | UPDATE users SET role = 1 WHERE role = 0 -------------------------------------------------------------------------------- /etc/browserstack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/etc/browserstack.png -------------------------------------------------------------------------------- /public/components/layout/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Stack" 2 | export * from "./Divider" 3 | -------------------------------------------------------------------------------- /app/pkg/dbx/testdata/migration_success/210001010001_delete.sql: -------------------------------------------------------------------------------- 1 | DELETE FROM dummy WHERE id = 300; -------------------------------------------------------------------------------- /migrations/201701281131_rename_domain.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE tenants RENAME COLUMN domain TO subdomain; -------------------------------------------------------------------------------- /migrations/201702251620_add_tenant_cname.up.sql: -------------------------------------------------------------------------------- 1 | alter table tenants add cname varchar(100) null -------------------------------------------------------------------------------- /migrations/201707081055_set_cname_null.up.sql: -------------------------------------------------------------------------------- 1 | UPDATE tenants SET cname = null WHERE cname = ''; -------------------------------------------------------------------------------- /migrations/201707261949_set_cname_empty.up.sql: -------------------------------------------------------------------------------- 1 | UPDATE tenants SET cname = '' WHERE cname IS NULL; -------------------------------------------------------------------------------- /migrations/201805230000_drop_supporters_column.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE ideas DROP COLUMN supporters; -------------------------------------------------------------------------------- /migrations/201703172030_add_ideas_userid.up.sql: -------------------------------------------------------------------------------- 1 | alter table ideas add user_id int REFERENCES users (id) -------------------------------------------------------------------------------- /migrations/202406111146_add_posts_user_id_index.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX post_user_key ON posts (user_id); 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | tests 3 | data 4 | output 5 | .git 6 | cover.out 7 | scripts 8 | .env 9 | dist -------------------------------------------------------------------------------- /app/models/dto/user.go: -------------------------------------------------------------------------------- 1 | package dto 2 | 3 | type UserNames struct { 4 | Name string `json:"name"` 5 | } 6 | -------------------------------------------------------------------------------- /migrations/202109052023_email_supressed_at.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE users ADD email_supressed_at TIMESTAMPTZ NULL; -------------------------------------------------------------------------------- /app/pkg/web/testdata/logo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/app/pkg/web/testdata/logo1.png -------------------------------------------------------------------------------- /app/pkg/web/testdata/logo2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/app/pkg/web/testdata/logo2.jpg -------------------------------------------------------------------------------- /app/pkg/web/testdata/logo3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/app/pkg/web/testdata/logo3.gif -------------------------------------------------------------------------------- /app/pkg/web/testdata/logo4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/app/pkg/web/testdata/logo4.png -------------------------------------------------------------------------------- /app/pkg/web/testdata/logo5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/app/pkg/web/testdata/logo5.png -------------------------------------------------------------------------------- /etc/privacy.md: -------------------------------------------------------------------------------- 1 | # Privacy Policy 2 | 3 | THIS IS A PLACEHOLDER FOR PRIVACY POLICY. REPLACE WITH YOUR OWN. 4 | -------------------------------------------------------------------------------- /etc/terms.md: -------------------------------------------------------------------------------- 1 | # Terms of Service 2 | 3 | THIS IS A PLACEHOLDER FOR TERMS OF SERVICE. REPLACE WITH YOUR OWN. 4 | -------------------------------------------------------------------------------- /migrations/201801031643_original_id.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE ideas ADD original_id INT NULL REFERENCES ideas(id); 2 | -------------------------------------------------------------------------------- /migrations/201904022134_lowercase_emails.sql: -------------------------------------------------------------------------------- 1 | update users set email = lower(email) where email != lower(email) -------------------------------------------------------------------------------- /app/pkg/web/testdata/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/app/pkg/web/testdata/favicon.ico -------------------------------------------------------------------------------- /migrations/201712131842_unique_slug.up.sql: -------------------------------------------------------------------------------- 1 | CREATE UNIQUE INDEX idea_slug_tenant_key ON ideas (tenant_id, slug); 2 | -------------------------------------------------------------------------------- /migrations/201811071547_increase_link_size.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE notifications ALTER COLUMN title TYPE VARCHAR(400); 2 | -------------------------------------------------------------------------------- /migrations/202507161200_add_allowed_schemes.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE tenants ADD allowed_schemes TEXT NOT NULL DEFAULT ''; 2 | -------------------------------------------------------------------------------- /public/services/testing/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./http" 2 | export * from "./fider" 3 | export * from "./modal" 4 | -------------------------------------------------------------------------------- /app/models/cmd/event.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | type StoreEvent struct { 4 | ClientIP string 5 | EventName string 6 | } 7 | -------------------------------------------------------------------------------- /app/models/cmd/system.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | type SetSystemSettings struct { 4 | Key string 5 | Value string 6 | } 7 | -------------------------------------------------------------------------------- /app/models/dto/http.go: -------------------------------------------------------------------------------- 1 | package dto 2 | 3 | type BasicAuth struct { 4 | User string 5 | Password string 6 | } 7 | -------------------------------------------------------------------------------- /app/pkg/web/testdata/logo3-200w.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/app/pkg/web/testdata/logo3-200w.gif -------------------------------------------------------------------------------- /app/services/blob/testdata/file2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getfider/fider/HEAD/app/services/blob/testdata/file2.png -------------------------------------------------------------------------------- /app/models/dto/billing.go: -------------------------------------------------------------------------------- 1 | package dto 2 | 3 | type PaddlePassthrough struct { 4 | TenantID int `json:"tenant_id"` 5 | } 6 | -------------------------------------------------------------------------------- /public/pages/SignIn/LoginEmailSent.page.scss: -------------------------------------------------------------------------------- 1 | #p-email-sent { 2 | .full-height { 3 | min-height: 100vh; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /app/pkg/tpl/testdata/base.html: -------------------------------------------------------------------------------- 1 | 2 |
{{block "head" .}}{{end}} 3 | {{block "body" .}}{{end}} 4 | -------------------------------------------------------------------------------- /public/assets/styles/variables/_sizing.scss: -------------------------------------------------------------------------------- 1 | $sizing-inc: 4px; 2 | 3 | @function sizing($i) { 4 | @return $sizing-inc * $i; 5 | } 6 | -------------------------------------------------------------------------------- /app/models/dto/blob.go: -------------------------------------------------------------------------------- 1 | package dto 2 | 3 | type Blob struct { 4 | Size int64 5 | Content []byte 6 | ContentType string 7 | } 8 | -------------------------------------------------------------------------------- /public/assets/styles/variables/_spacing.scss: -------------------------------------------------------------------------------- 1 | $spacing-inc: 4px; 2 | 3 | @function spacing($i) { 4 | @return $spacing-inc * $i; 5 | } 6 | -------------------------------------------------------------------------------- /app/models/query/system.go: -------------------------------------------------------------------------------- 1 | package query 2 | 3 | type GetSystemSettings struct { 4 | Key string 5 | 6 | // Output 7 | Value string 8 | } 9 | -------------------------------------------------------------------------------- /public/services/device.ts: -------------------------------------------------------------------------------- 1 | export const isTouch = (): boolean => { 2 | return "ontouchstart" in window || navigator.maxTouchPoints > 0 3 | } 4 | -------------------------------------------------------------------------------- /views/email/echo_test.html: -------------------------------------------------------------------------------- 1 | {{define "subject"}}Message to: {{ .name }}{{end}} 2 | 3 | {{define "body"}} 4 | Hello World {{ .name }}! 5 | {{end}} -------------------------------------------------------------------------------- /migrations/201709091228_create_email_verification_key_index.up.sql: -------------------------------------------------------------------------------- 1 | CREATE UNIQUE INDEX email_verification_key_idx ON email_verifications (tenant_id, key); -------------------------------------------------------------------------------- /public/hooks/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./use-timeout" 2 | export * from "./use-fider" 3 | export * from "./use-script" 4 | export * from "./use-cache" 5 | -------------------------------------------------------------------------------- /public/pages/SignIn/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./SignIn.page" 2 | export * from "./CompleteSignInProfile.page" 3 | export * from "./LoginEmailSent.page" 4 | -------------------------------------------------------------------------------- /migrations/201703240709_remove_col_tenants.up.sql: -------------------------------------------------------------------------------- 1 | alter table tenants drop column modified_on; 2 | alter table tenants alter column created_on drop default; -------------------------------------------------------------------------------- /migrations/202109272130_system_settings.sql: -------------------------------------------------------------------------------- 1 | create table if not exists system_settings ( 2 | key varchar(100) primary key, 3 | value text not null 4 | ); -------------------------------------------------------------------------------- /migrations/201709241236_add_tenant_status.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE tenants ADD status INT NOT NULL DEFAULT 1; 2 | ALTER TABLE tenants ALTER COLUMN status DROP DEFAULT; -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "trailingComma": "es5", 4 | "singleQuote": false, 5 | "printWidth": 160, 6 | "tabWidth": 2, 7 | "useTabs": false 8 | } -------------------------------------------------------------------------------- /public/assets/styles/utility/colors.scss: -------------------------------------------------------------------------------- 1 | @import "../variables/_colors.scss"; 2 | @import "../variables/_dark-colors.scss"; 3 | @import "../utility/_theme.scss"; 4 | -------------------------------------------------------------------------------- /public/models/billing.ts: -------------------------------------------------------------------------------- 1 | export enum BillingStatus { 2 | Trial = 1, 3 | Active = 2, 4 | Cancelled = 3, 5 | FreeForever = 4, 6 | OpenCollective = 5, 7 | } 8 | -------------------------------------------------------------------------------- /migrations/201704112003_add_role_users.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE users ADD role INT; 2 | 3 | UPDATE users SET role = 1; 4 | 5 | ALTER TABLE users ALTER COLUMN role SET NOT NULL; -------------------------------------------------------------------------------- /app/pkg/dbx/testdata/migration_failure/210001010001_create_ok.sql: -------------------------------------------------------------------------------- 1 | create table if not exists dummy ( 2 | id int not null, 3 | description varchar(200) not null 4 | ); -------------------------------------------------------------------------------- /migrations/201703310824_remove_col_user_providers.up.sql: -------------------------------------------------------------------------------- 1 | alter table user_providers drop column modified_on; 2 | alter table user_providers alter column created_on drop default; -------------------------------------------------------------------------------- /migrations/201705132054_add_idea_status.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE ideas ADD status INT; 2 | 3 | UPDATE ideas SET status = 0; 4 | 5 | ALTER TABLE ideas ALTER COLUMN status SET NOT NULL; -------------------------------------------------------------------------------- /migrations/201808192103_increase_key_size.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE users ALTER COLUMN api_key TYPE VARCHAR(64); 2 | ALTER TABLE email_verifications ALTER COLUMN key TYPE VARCHAR(64); 3 | -------------------------------------------------------------------------------- /migrations/201901072106_recreate_post_slug_index.sql: -------------------------------------------------------------------------------- 1 | DROP INDEX post_slug_tenant_key; 2 | CREATE UNIQUE INDEX post_slug_tenant_key ON posts (tenant_id, slug) WHERE status <> 6; -------------------------------------------------------------------------------- /public/components/ThemeSwitcher.scss: -------------------------------------------------------------------------------- 1 | .c-themeswitcher { 2 | border: none; 3 | background: transparent; 4 | color: var(--colors-gray-700); 5 | cursor: pointer; 6 | } 7 | -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: /_api/ 3 | Disallow: /api/v1/ 4 | Disallow: /admin/ 5 | Disallow: /oauth/ 6 | Disallow: /terms 7 | Disallow: /privacy 8 | Disallow: /_design -------------------------------------------------------------------------------- /migrations/201705191854_add_idea_slug.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE ideas ADD slug varchar(100); 2 | 3 | UPDATE ideas SET slug = ''; 4 | 5 | ALTER TABLE ideas ALTER COLUMN slug SET NOT NULL; -------------------------------------------------------------------------------- /migrations/201805261834_add_user_status.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE users ADD status INT NULL; 2 | 3 | UPDATE users SET status = 1; 4 | 5 | ALTER TABLE users ALTER COLUMN status SET NOT NULL; -------------------------------------------------------------------------------- /app/pkg/csv/testdata/empty.csv: -------------------------------------------------------------------------------- 1 | number,title,description,created_at,created_by,votes_count,comments_count,status,responded_by,responded_at,response,original_number,original_title,tags 2 | -------------------------------------------------------------------------------- /app/pkg/tpl/testdata/echo.html: -------------------------------------------------------------------------------- 1 | {{define "head"}}This goes on the head.{{end}} 2 | 3 | {{define "body"}} 4 | {{ translate "email.greetings_name" (dict "name" .name) | html }} 5 | {{end}} -------------------------------------------------------------------------------- /migrations/202107031320_add_locale_field.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE tenants ADD locale VARCHAR(10) NULL; 2 | UPDATE tenants SET locale = 'en'; 3 | ALTER TABLE tenants ALTER COLUMN locale SET NOT NULL; -------------------------------------------------------------------------------- /migrations/202205082055_trusted_provider.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE oauth_providers ADD is_trusted BOOLEAN default false; 2 | 3 | CREATE UNIQUE INDEX oauth_provider_uq ON oauth_providers (provider); -------------------------------------------------------------------------------- /migrations/201711181740_create_uniq_indexes.up.sql: -------------------------------------------------------------------------------- 1 | CREATE UNIQUE INDEX idea_number_tenant_key ON ideas (tenant_id, number); 2 | CREATE UNIQUE INDEX tag_slug_tenant_key ON tags (tenant_id, slug); -------------------------------------------------------------------------------- /public/pages/Home/components/PostFilter.scss: -------------------------------------------------------------------------------- 1 | @use "~@fider/assets/styles/variables.scss" as *; 2 | 3 | .filter-input { 4 | margin: spacing(2); 5 | width: calc(100% - spacing(4)); 6 | } 7 | -------------------------------------------------------------------------------- /views/email/invite_email.html: -------------------------------------------------------------------------------- 1 | {{define "subject"}}{{ .subject }}{{end}} 2 | 3 | {{define "body"}} 4 |{{ "email.signup_email.text" | translate }}
8 |{{ "email.signup_email.confirmation" | translate }}
9 |{{ .link | html }}
10 |
12 |
12 |
12 |
12 |
12 |
{{ translate "email.change_emailaddress.request" (dict "oldEmail" .oldEmail "newEmail" .newEmail) }}
8 |{{ "email.operation_confirmation" | translate }}
9 |{{ .link | html }}
10 |
12 |
{props.message}
14 | {props.until ? ( 15 |16 | We'll be back at {props.until}. 17 |
18 | ) : ( 19 |We'll be back soon.
20 | )} 21 |7 | {{ translate "email.delete_post.text" (dict "title" (.title | stripHtml)) | html }} 8 |
9 ||
15 | — 16 | {{ translate "email.footer.subscription_notice2" (dict "change" .change) | html }} 17 | |
18 |
7 | {{ translate "email.new_post.text" (dict "userName" (.userName | stripHtml) "title" (.title | stripHtml) "postLink" .postLink) | html }} 8 |
9 ||
15 | — 16 | {{ translate "email.footer.subscription_notice3" (dict "view" .view "change" .change) | html }} 17 | |
18 |
7 | {{ translate .messageLocaleString (dict "userName" .userName "title" (.title | stripHtml) "postLink" .postLink) | html }} 8 |
9 ||
15 | — 16 | {{ translate "email.footer.subscription_notice" (dict "view" .view "unsubscribe" .unsubscribe "change" .change) | html }} 17 | |
18 |