diff --git a/apps/backend/src/api/api.module.ts b/apps/backend/src/api/api.module.ts
index 011562708..d60fabc3a 100644
--- a/apps/backend/src/api/api.module.ts
+++ b/apps/backend/src/api/api.module.ts
@@ -11,7 +11,6 @@ import { PermissionsService } from '@gitroom/backend/services/auth/permissions/p
import { IntegrationsController } from '@gitroom/backend/api/routes/integrations.controller';
import { IntegrationManager } from '@gitroom/nestjs-libraries/integrations/integration.manager';
import { SettingsController } from '@gitroom/backend/api/routes/settings.controller';
-import { ioRedis } from '@gitroom/nestjs-libraries/redis/redis.service';
import { PostsController } from '@gitroom/backend/api/routes/posts.controller';
import { MediaController } from '@gitroom/backend/api/routes/media.controller';
import { UploadModule } from '@gitroom/nestjs-libraries/upload/upload.module';
@@ -27,6 +26,7 @@ import { CodesService } from '@gitroom/nestjs-libraries/services/codes.service';
import { CopilotController } from '@gitroom/backend/api/routes/copilot.controller';
import { AgenciesController } from '@gitroom/backend/api/routes/agencies.controller';
import { PublicController } from '@gitroom/backend/api/routes/public.controller';
+import { RootController } from '@gitroom/backend/api/routes/root.controller';
const authenticatedController = [
UsersController,
@@ -60,6 +60,7 @@ const authenticatedController = [
: []),
],
controllers: [
+ RootController,
StripeController,
AuthController,
PublicController,
diff --git a/apps/backend/src/api/routes/analytics.controller.ts b/apps/backend/src/api/routes/analytics.controller.ts
index 257df0a82..dbe350366 100644
--- a/apps/backend/src/api/routes/analytics.controller.ts
+++ b/apps/backend/src/api/routes/analytics.controller.ts
@@ -17,6 +17,7 @@ import { IntegrationService } from '@gitroom/nestjs-libraries/database/prisma/in
import { IntegrationManager } from '@gitroom/nestjs-libraries/integrations/integration.manager';
import { ioRedis } from '@gitroom/nestjs-libraries/redis/redis.service';
import { RefreshToken } from '@gitroom/nestjs-libraries/integrations/social.abstract';
+import { timer } from '@gitroom/helpers/utils/timer';
@ApiTags('Analytics')
@Controller('/analytics')
@@ -61,78 +62,6 @@ export class AnalyticsController {
@Param('integration') integration: string,
@Query('date') date: string
) {
- const getIntegration = await this._integrationService.getIntegrationById(
- org.id,
- integration
- );
-
- if (!getIntegration) {
- throw new Error('Invalid integration');
- }
-
- if (getIntegration.type !== 'social') {
- return {};
- }
-
- const integrationProvider = this._integrationManager.getSocialIntegration(
- getIntegration.providerIdentifier
- );
-
- if (dayjs(getIntegration?.tokenExpiration).isBefore(dayjs())) {
- const { accessToken, expiresIn, refreshToken } =
- await integrationProvider.refreshToken(getIntegration.refreshToken!);
-
- if (accessToken) {
- await this._integrationService.createOrUpdateIntegration(
- getIntegration.organizationId,
- getIntegration.name,
- getIntegration.picture!,
- 'social',
- getIntegration.internalId,
- getIntegration.providerIdentifier,
- accessToken,
- refreshToken,
- expiresIn
- );
-
- getIntegration.token = accessToken;
- }
- }
-
- const getIntegrationData = await ioRedis.get(
- `integration:${org.id}:${integration}:${date}`
- );
- if (getIntegrationData) {
- return JSON.parse(getIntegrationData);
- }
-
- if (integrationProvider.analytics) {
- try {
- const loadAnalytics = await integrationProvider.analytics(
- getIntegration.internalId,
- getIntegration.token,
- +date
- );
- await ioRedis.set(
- `integration:${org.id}:${integration}:${date}`,
- JSON.stringify(loadAnalytics),
- 'EX',
- !process.env.NODE_ENV || process.env.NODE_ENV === 'development'
- ? 1
- : 3600
- );
- return loadAnalytics;
- } catch (e) {
- if (e instanceof RefreshToken) {
- await this._integrationService.disconnectChannel(
- org.id,
- getIntegration
- );
- return [];
- }
- }
- }
-
- return [];
+ return this._integrationService.checkAnalytics(org, integration, date);
}
}
diff --git a/apps/backend/src/api/routes/auth.controller.ts b/apps/backend/src/api/routes/auth.controller.ts
index bd14422ec..1a0a8af27 100644
--- a/apps/backend/src/api/routes/auth.controller.ts
+++ b/apps/backend/src/api/routes/auth.controller.ts
@@ -30,7 +30,9 @@ export class AuthController {
getOrgFromCookie
);
- if (body.provider === 'LOCAL') {
+ const activationRequired = body.provider === 'LOCAL' && !!process.env.RESEND_API_KEY;
+
+ if (activationRequired) {
response.header('activate', 'true');
response.status(200).json({ activate: true });
return;
diff --git a/apps/backend/src/api/routes/integrations.controller.ts b/apps/backend/src/api/routes/integrations.controller.ts
index a633bb4d9..a9a92b2dd 100644
--- a/apps/backend/src/api/routes/integrations.controller.ts
+++ b/apps/backend/src/api/routes/integrations.controller.ts
@@ -26,6 +26,7 @@ import { ApiTags } from '@nestjs/swagger';
import { GetUserFromRequest } from '@gitroom/nestjs-libraries/user/user.from.request';
import { NotEnoughScopesFilter } from '@gitroom/nestjs-libraries/integrations/integration.missing.scopes';
import { PostsService } from '@gitroom/nestjs-libraries/database/prisma/posts/posts.service';
+import { IntegrationTimeDto } from '@gitroom/nestjs-libraries/dtos/integrations/integration.time.dto';
@ApiTags('Integrations')
@Controller('/integrations')
@@ -55,6 +56,7 @@ export class IntegrationsController {
inBetweenSteps: p.inBetweenSteps,
refreshNeeded: p.refreshNeeded,
type: p.type,
+ time: JSON.parse(p.postingTimes)
})),
};
}
@@ -97,6 +99,14 @@ export class IntegrationsController {
return { url };
}
+ @Post('/:id/time')
+ async setTime(
+ @GetOrgFromRequest() org: Organization,
+ @Param('id') id: string,
+ @Body() body: IntegrationTimeDto
+ ) {
+ return this._integrationService.setTimes(org.id, id, body);
+ }
@Post('/function')
async functionIntegration(
@GetOrgFromRequest() org: Organization,
@@ -238,7 +248,8 @@ export class IntegrationsController {
expiresIn,
username,
integrationProvider.isBetweenSteps,
- body.refresh
+ body.refresh,
+ +body.timezone
);
}
diff --git a/apps/backend/src/api/routes/posts.controller.ts b/apps/backend/src/api/routes/posts.controller.ts
index dccdd28ce..1590411a3 100644
--- a/apps/backend/src/api/routes/posts.controller.ts
+++ b/apps/backend/src/api/routes/posts.controller.ts
@@ -13,7 +13,6 @@ import { GetOrgFromRequest } from '@gitroom/nestjs-libraries/user/org.from.reque
import { Organization, User } from '@prisma/client';
import { CreatePostDto } from '@gitroom/nestjs-libraries/dtos/posts/create.post.dto';
import { GetPostsDto } from '@gitroom/nestjs-libraries/dtos/posts/get.posts.dto';
-import { CommentsService } from '@gitroom/nestjs-libraries/database/prisma/comments/comments.service';
import { StarsService } from '@gitroom/nestjs-libraries/database/prisma/stars/stars.service';
import { CheckPolicies } from '@gitroom/backend/services/auth/permissions/permissions.ability';
import {
@@ -30,7 +29,6 @@ import { CreateGeneratedPostsDto } from '@gitroom/nestjs-libraries/dtos/generato
export class PostsController {
constructor(
private _postsService: PostsService,
- private _commentsService: CommentsService,
private _starsService: StarsService,
private _messagesService: MessagesService
) {}
diff --git a/apps/backend/src/api/routes/root.controller.ts b/apps/backend/src/api/routes/root.controller.ts
new file mode 100644
index 000000000..c79d90807
--- /dev/null
+++ b/apps/backend/src/api/routes/root.controller.ts
@@ -0,0 +1,8 @@
+import { Controller, Get } from '@nestjs/common';
+@Controller('/')
+export class RootController {
+ @Get('/')
+ getRoot(): string {
+ return 'App is running!';
+ }
+}
diff --git a/apps/backend/src/api/routes/users.controller.ts b/apps/backend/src/api/routes/users.controller.ts
index 81bc575de..85311535f 100644
--- a/apps/backend/src/api/routes/users.controller.ts
+++ b/apps/backend/src/api/routes/users.controller.ts
@@ -21,7 +21,7 @@ import {
AuthorizationActions,
Sections,
} from '@gitroom/backend/services/auth/permissions/permissions.service';
-import { removeSubdomain } from '@gitroom/helpers/subdomain/subdomain.management';
+import { getCookieUrlFromDomain } from '@gitroom/helpers/subdomain/subdomain.management';
import { pricing } from '@gitroom/nestjs-libraries/database/prisma/subscriptions/pricing';
import { ApiTags } from '@nestjs/swagger';
import { UsersService } from '@gitroom/nestjs-libraries/database/prisma/users/users.service';
@@ -54,7 +54,7 @@ export class UsersController {
// @ts-ignore
totalChannels: organization?.subscription?.totalChannels || pricing.FREE.channel,
// @ts-ignore
- tier: organization?.subscription?.subscriptionTier || 'FREE',
+ tier: organization?.subscription?.subscriptionTier || (!process.env.STRIPE_PUBLISHABLE_KEY ? 'ULTIMATE' : 'FREE'),
// @ts-ignore
role: organization?.users[0]?.role,
// @ts-ignore
@@ -92,8 +92,7 @@ export class UsersController {
}
response.cookie('impersonate', id, {
- domain:
- '.' + new URL(removeSubdomain(process.env.FRONTEND_URL!)).hostname,
+ domain: getCookieUrlFromDomain(process.env.FRONTEND_URL!),
secure: true,
httpOnly: true,
sameSite: 'none',
@@ -163,8 +162,7 @@ export class UsersController {
@Res({ passthrough: true }) response: Response
) {
response.cookie('showorg', id, {
- domain:
- '.' + new URL(removeSubdomain(process.env.FRONTEND_URL!)).hostname,
+ domain: getCookieUrlFromDomain(process.env.FRONTEND_URL!),
secure: true,
httpOnly: true,
sameSite: 'none',
@@ -177,8 +175,7 @@ export class UsersController {
@Post('/logout')
logout(@Res({ passthrough: true }) response: Response) {
response.cookie('auth', '', {
- domain:
- '.' + new URL(removeSubdomain(process.env.FRONTEND_URL!)).hostname,
+ domain: getCookieUrlFromDomain(process.env.FRONTEND_URL!),
secure: true,
httpOnly: true,
maxAge: -1,
@@ -187,8 +184,7 @@ export class UsersController {
});
response.cookie('showorg', '', {
- domain:
- '.' + new URL(removeSubdomain(process.env.FRONTEND_URL!)).hostname,
+ domain: getCookieUrlFromDomain(process.env.FRONTEND_URL!),
secure: true,
httpOnly: true,
maxAge: -1,
@@ -197,8 +193,7 @@ export class UsersController {
});
response.cookie('impersonate', '', {
- domain:
- '.' + new URL(removeSubdomain(process.env.FRONTEND_URL!)).hostname,
+ domain: getCookieUrlFromDomain(process.env.FRONTEND_URL!),
secure: true,
httpOnly: true,
maxAge: -1,
diff --git a/apps/backend/src/main.ts b/apps/backend/src/main.ts
index d7b8d4648..30f1be83a 100644
--- a/apps/backend/src/main.ts
+++ b/apps/backend/src/main.ts
@@ -36,11 +36,16 @@ async function bootstrap() {
loadSwagger(app);
const port = process.env.PORT || 3000;
- await app.listen(port);
- checkConfiguration() // Do this last, so that users will see obvious issues at the end of the startup log without having to scroll up.
+ try {
+ await app.listen(port);
+
+ checkConfiguration() // Do this last, so that users will see obvious issues at the end of the startup log without having to scroll up.
- Logger.log(`🚀 Application is running on: http://localhost:${port}`);
+ Logger.log(`🚀 Backend is running on: http://localhost:${port}`);
+ } catch (e) {
+ Logger.error(`Backend failed to start on port ${port}`, e);
+ }
}
function checkConfiguration() {
@@ -53,7 +58,7 @@ function checkConfiguration() {
Logger.warn(issue, 'Configuration issue')
}
- Logger.warn("Configuration issues found: " + checker.getIssuesCount() + ". You can run `npm run command config:check` to quickly check again.")
+ Logger.warn("Configuration issues found: " + checker.getIssuesCount())
} else {
Logger.log("Configuration check completed without any issues.")
}
diff --git a/apps/cron/src/cron.module.ts b/apps/cron/src/cron.module.ts
index a44744b9b..4db31e812 100644
--- a/apps/cron/src/cron.module.ts
+++ b/apps/cron/src/cron.module.ts
@@ -8,6 +8,6 @@ import { BullMqModule } from '@gitroom/nestjs-libraries/bull-mq-transport-new/bu
@Module({
imports: [DatabaseModule, ScheduleModule.forRoot(), BullMqModule],
controllers: [],
- providers: [CheckStars, SyncTrending],
+ providers: [...(!process.env.IS_GENERAL ? [CheckStars, SyncTrending] : [])],
})
export class CronModule {}
diff --git a/apps/docs/README.md b/apps/docs/README.md
deleted file mode 100644
index c89c478d1..000000000
--- a/apps/docs/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Mintlify Starter Kit
-
-Click on `Use this template` to copy the Mintlify starter kit. The starter kit contains examples including
-
-- Guide pages
-- Navigation
-- Customizations
-- API Reference pages
-- Use of popular components
-
-### Development
-
-Install the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command
-
-```
-npm i -g mintlify
-```
-
-Run the following command at the root of your documentation (where mint.json is)
-
-```
-mintlify dev
-```
-
-### Publishing Changes
-
-Install our Github App to autopropagate changes from youre repo to your deployment. Changes will be deployed to production automatically after pushing to the default branch. Find the link to install on your dashboard.
-
-#### Troubleshooting
-
-- Mintlify dev isn't running - Run `mintlify install` it'll re-install dependencies.
-- Page loads as a 404 - Make sure you are running in a folder with `mint.json`
diff --git a/apps/docs/api-reference/custom/analytics/get-analytics.mdx b/apps/docs/api-reference/custom/analytics/get-analytics.mdx
deleted file mode 100644
index d66ca0a84..000000000
--- a/apps/docs/api-reference/custom/analytics/get-analytics.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /analytics
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/analytics/get-analyticstrending.mdx b/apps/docs/api-reference/custom/analytics/get-analyticstrending.mdx
deleted file mode 100644
index 1401ebfe7..000000000
--- a/apps/docs/api-reference/custom/analytics/get-analyticstrending.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /analytics/trending
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/analytics/post-analyticsstars.mdx b/apps/docs/api-reference/custom/analytics/post-analyticsstars.mdx
deleted file mode 100644
index a785314cc..000000000
--- a/apps/docs/api-reference/custom/analytics/post-analyticsstars.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /analytics/stars
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/auth/post-authforgot-return.mdx b/apps/docs/api-reference/custom/auth/post-authforgot-return.mdx
deleted file mode 100644
index 98b152f6a..000000000
--- a/apps/docs/api-reference/custom/auth/post-authforgot-return.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /auth/forgot-return
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/auth/post-authforgot.mdx b/apps/docs/api-reference/custom/auth/post-authforgot.mdx
deleted file mode 100644
index ecfdaec7f..000000000
--- a/apps/docs/api-reference/custom/auth/post-authforgot.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /auth/forgot
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/auth/post-authlogin.mdx b/apps/docs/api-reference/custom/auth/post-authlogin.mdx
deleted file mode 100644
index c20b13e4e..000000000
--- a/apps/docs/api-reference/custom/auth/post-authlogin.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /auth/login
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/auth/post-authregister.mdx b/apps/docs/api-reference/custom/auth/post-authregister.mdx
deleted file mode 100644
index 6e6245559..000000000
--- a/apps/docs/api-reference/custom/auth/post-authregister.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /auth/register
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/billing/get-billing.mdx b/apps/docs/api-reference/custom/billing/get-billing.mdx
deleted file mode 100644
index 3fc1da215..000000000
--- a/apps/docs/api-reference/custom/billing/get-billing.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /billing
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/billing/get-billingcheck.mdx b/apps/docs/api-reference/custom/billing/get-billingcheck.mdx
deleted file mode 100644
index 4bd8e5339..000000000
--- a/apps/docs/api-reference/custom/billing/get-billingcheck.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /billing/check/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/billing/get-billingportal.mdx b/apps/docs/api-reference/custom/billing/get-billingportal.mdx
deleted file mode 100644
index 7d6a0bea2..000000000
--- a/apps/docs/api-reference/custom/billing/get-billingportal.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /billing/portal
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/billing/post-billingcancel.mdx b/apps/docs/api-reference/custom/billing/post-billingcancel.mdx
deleted file mode 100644
index aaf94dbdb..000000000
--- a/apps/docs/api-reference/custom/billing/post-billingcancel.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /billing/cancel
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/billing/post-billingprorate.mdx b/apps/docs/api-reference/custom/billing/post-billingprorate.mdx
deleted file mode 100644
index faf145e62..000000000
--- a/apps/docs/api-reference/custom/billing/post-billingprorate.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /billing/prorate
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/billing/post-billingsubscribe.mdx b/apps/docs/api-reference/custom/billing/post-billingsubscribe.mdx
deleted file mode 100644
index b922bdbd1..000000000
--- a/apps/docs/api-reference/custom/billing/post-billingsubscribe.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /billing/subscribe
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/comments/delete-comments.mdx b/apps/docs/api-reference/custom/comments/delete-comments.mdx
deleted file mode 100644
index 05f2e159f..000000000
--- a/apps/docs/api-reference/custom/comments/delete-comments.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: delete /comments/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/comments/get-comments.mdx b/apps/docs/api-reference/custom/comments/get-comments.mdx
deleted file mode 100644
index a89d40d7b..000000000
--- a/apps/docs/api-reference/custom/comments/get-comments.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /comments/{date}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/comments/post-comments-1.mdx b/apps/docs/api-reference/custom/comments/post-comments-1.mdx
deleted file mode 100644
index b808bdeb2..000000000
--- a/apps/docs/api-reference/custom/comments/post-comments-1.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /comments/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/comments/post-comments.mdx b/apps/docs/api-reference/custom/comments/post-comments.mdx
deleted file mode 100644
index 20750b6c8..000000000
--- a/apps/docs/api-reference/custom/comments/post-comments.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /comments
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/comments/put-comments.mdx b/apps/docs/api-reference/custom/comments/put-comments.mdx
deleted file mode 100644
index 80e76a6f2..000000000
--- a/apps/docs/api-reference/custom/comments/put-comments.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: put /comments/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/delete-integrations.mdx b/apps/docs/api-reference/custom/integrations/delete-integrations.mdx
deleted file mode 100644
index 01eb5339f..000000000
--- a/apps/docs/api-reference/custom/integrations/delete-integrations.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: delete /integrations
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/get-integrations.mdx b/apps/docs/api-reference/custom/integrations/get-integrations.mdx
deleted file mode 100644
index ea16dc896..000000000
--- a/apps/docs/api-reference/custom/integrations/get-integrations.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /integrations
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/get-integrationslist.mdx b/apps/docs/api-reference/custom/integrations/get-integrationslist.mdx
deleted file mode 100644
index 4492a8eb1..000000000
--- a/apps/docs/api-reference/custom/integrations/get-integrationslist.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /integrations/list
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/get-integrationssocial.mdx b/apps/docs/api-reference/custom/integrations/get-integrationssocial.mdx
deleted file mode 100644
index 012ff9357..000000000
--- a/apps/docs/api-reference/custom/integrations/get-integrationssocial.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /integrations/social/{integration}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/post-integrationsarticle-connect.mdx b/apps/docs/api-reference/custom/integrations/post-integrationsarticle-connect.mdx
deleted file mode 100644
index 992192eee..000000000
--- a/apps/docs/api-reference/custom/integrations/post-integrationsarticle-connect.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /integrations/article/{integration}/connect
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/post-integrationsdisable.mdx b/apps/docs/api-reference/custom/integrations/post-integrationsdisable.mdx
deleted file mode 100644
index 2af123c5f..000000000
--- a/apps/docs/api-reference/custom/integrations/post-integrationsdisable.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /integrations/disable
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/post-integrationsenable.mdx b/apps/docs/api-reference/custom/integrations/post-integrationsenable.mdx
deleted file mode 100644
index 1866d943b..000000000
--- a/apps/docs/api-reference/custom/integrations/post-integrationsenable.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /integrations/enable
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/post-integrationsfunction.mdx b/apps/docs/api-reference/custom/integrations/post-integrationsfunction.mdx
deleted file mode 100644
index 7bd2564bd..000000000
--- a/apps/docs/api-reference/custom/integrations/post-integrationsfunction.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /integrations/function
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/integrations/post-integrationssocial-connect.mdx b/apps/docs/api-reference/custom/integrations/post-integrationssocial-connect.mdx
deleted file mode 100644
index 7b7e99b47..000000000
--- a/apps/docs/api-reference/custom/integrations/post-integrationssocial-connect.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /integrations/social/{integration}/connect
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/media/get-media.mdx b/apps/docs/api-reference/custom/media/get-media.mdx
deleted file mode 100644
index 84018f438..000000000
--- a/apps/docs/api-reference/custom/media/get-media.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /media
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/media/post-media.mdx b/apps/docs/api-reference/custom/media/post-media.mdx
deleted file mode 100644
index 5ef2236a5..000000000
--- a/apps/docs/api-reference/custom/media/post-media.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /media
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/notifications/get-notifications.mdx b/apps/docs/api-reference/custom/notifications/get-notifications.mdx
deleted file mode 100644
index 0a659ffc6..000000000
--- a/apps/docs/api-reference/custom/notifications/get-notifications.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /notifications
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/notifications/get-notificationslist.mdx b/apps/docs/api-reference/custom/notifications/get-notificationslist.mdx
deleted file mode 100644
index 44bb0ab78..000000000
--- a/apps/docs/api-reference/custom/notifications/get-notificationslist.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /notifications/list
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/posts/delete-posts.mdx b/apps/docs/api-reference/custom/posts/delete-posts.mdx
deleted file mode 100644
index 69d46e4ff..000000000
--- a/apps/docs/api-reference/custom/posts/delete-posts.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: delete /posts/{group}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/posts/get-posts-1.mdx b/apps/docs/api-reference/custom/posts/get-posts-1.mdx
deleted file mode 100644
index b4b6045da..000000000
--- a/apps/docs/api-reference/custom/posts/get-posts-1.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /posts/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/posts/get-posts.mdx b/apps/docs/api-reference/custom/posts/get-posts.mdx
deleted file mode 100644
index 2b8135958..000000000
--- a/apps/docs/api-reference/custom/posts/get-posts.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /posts
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/posts/get-postsold.mdx b/apps/docs/api-reference/custom/posts/get-postsold.mdx
deleted file mode 100644
index 5f2cca667..000000000
--- a/apps/docs/api-reference/custom/posts/get-postsold.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /posts/old
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/posts/get-postspredict-trending.mdx b/apps/docs/api-reference/custom/posts/get-postspredict-trending.mdx
deleted file mode 100644
index 0f0ad9837..000000000
--- a/apps/docs/api-reference/custom/posts/get-postspredict-trending.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /posts/predict-trending
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/posts/post-posts.mdx b/apps/docs/api-reference/custom/posts/post-posts.mdx
deleted file mode 100644
index 1a6a78bf7..000000000
--- a/apps/docs/api-reference/custom/posts/post-posts.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /posts
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/posts/put-posts-date.mdx b/apps/docs/api-reference/custom/posts/put-posts-date.mdx
deleted file mode 100644
index b9655c264..000000000
--- a/apps/docs/api-reference/custom/posts/put-posts-date.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: put /posts/{id}/date
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/delete-settingsrepository.mdx b/apps/docs/api-reference/custom/settings/delete-settingsrepository.mdx
deleted file mode 100644
index 3b646c0fe..000000000
--- a/apps/docs/api-reference/custom/settings/delete-settingsrepository.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: delete /settings/repository/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/delete-settingsteam.mdx b/apps/docs/api-reference/custom/settings/delete-settingsteam.mdx
deleted file mode 100644
index aaf40de29..000000000
--- a/apps/docs/api-reference/custom/settings/delete-settingsteam.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: delete /settings/team/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/get-settingsgithub.mdx b/apps/docs/api-reference/custom/settings/get-settingsgithub.mdx
deleted file mode 100644
index ac3cbd5c4..000000000
--- a/apps/docs/api-reference/custom/settings/get-settingsgithub.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /settings/github
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/get-settingsgithuburl.mdx b/apps/docs/api-reference/custom/settings/get-settingsgithuburl.mdx
deleted file mode 100644
index b952fe505..000000000
--- a/apps/docs/api-reference/custom/settings/get-settingsgithuburl.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /settings/github/url
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/get-settingsorganizations-.mdx b/apps/docs/api-reference/custom/settings/get-settingsorganizations-.mdx
deleted file mode 100644
index 57bb5902e..000000000
--- a/apps/docs/api-reference/custom/settings/get-settingsorganizations-.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /settings/organizations/{id}/{github}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/get-settingsorganizations.mdx b/apps/docs/api-reference/custom/settings/get-settingsorganizations.mdx
deleted file mode 100644
index 8b64a9b1f..000000000
--- a/apps/docs/api-reference/custom/settings/get-settingsorganizations.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /settings/organizations/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/get-settingsteam.mdx b/apps/docs/api-reference/custom/settings/get-settingsteam.mdx
deleted file mode 100644
index 5a05bd017..000000000
--- a/apps/docs/api-reference/custom/settings/get-settingsteam.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /settings/team
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/post-settingsgithub.mdx b/apps/docs/api-reference/custom/settings/post-settingsgithub.mdx
deleted file mode 100644
index bf19af99a..000000000
--- a/apps/docs/api-reference/custom/settings/post-settingsgithub.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /settings/github
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/post-settingsorganizations.mdx b/apps/docs/api-reference/custom/settings/post-settingsorganizations.mdx
deleted file mode 100644
index fd26194f8..000000000
--- a/apps/docs/api-reference/custom/settings/post-settingsorganizations.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /settings/organizations/{id}
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/settings/post-settingsteam.mdx b/apps/docs/api-reference/custom/settings/post-settingsteam.mdx
deleted file mode 100644
index bde58c248..000000000
--- a/apps/docs/api-reference/custom/settings/post-settingsteam.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /settings/team
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/stripe/post-stripe.mdx b/apps/docs/api-reference/custom/stripe/post-stripe.mdx
deleted file mode 100644
index 3a80d176d..000000000
--- a/apps/docs/api-reference/custom/stripe/post-stripe.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /stripe
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/user/get-userorganizations.mdx b/apps/docs/api-reference/custom/user/get-userorganizations.mdx
deleted file mode 100644
index 66f23d584..000000000
--- a/apps/docs/api-reference/custom/user/get-userorganizations.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /user/organizations
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/user/get-userself.mdx b/apps/docs/api-reference/custom/user/get-userself.mdx
deleted file mode 100644
index 0d91b7c42..000000000
--- a/apps/docs/api-reference/custom/user/get-userself.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /user/self
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/user/get-usersubscription.mdx b/apps/docs/api-reference/custom/user/get-usersubscription.mdx
deleted file mode 100644
index 3254da9e6..000000000
--- a/apps/docs/api-reference/custom/user/get-usersubscription.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /user/subscription
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/user/get-usersubscriptiontiers.mdx b/apps/docs/api-reference/custom/user/get-usersubscriptiontiers.mdx
deleted file mode 100644
index b277613e7..000000000
--- a/apps/docs/api-reference/custom/user/get-usersubscriptiontiers.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: get /user/subscription/tiers
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/user/post-userchange-org.mdx b/apps/docs/api-reference/custom/user/post-userchange-org.mdx
deleted file mode 100644
index 73d9742eb..000000000
--- a/apps/docs/api-reference/custom/user/post-userchange-org.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /user/change-org
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/custom/user/post-userjoin-org.mdx b/apps/docs/api-reference/custom/user/post-userjoin-org.mdx
deleted file mode 100644
index 27014d520..000000000
--- a/apps/docs/api-reference/custom/user/post-userjoin-org.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
----
-openapi: post /user/join-org
----
\ No newline at end of file
diff --git a/apps/docs/api-reference/introduction.mdx b/apps/docs/api-reference/introduction.mdx
deleted file mode 100644
index f1f59cb8a..000000000
--- a/apps/docs/api-reference/introduction.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: 'Introduction'
----
-
-
- If you're not looking to build API reference documentation, you can delete
- this section by removing the api-reference folder.
-
-
-## Welcome
-
-## How to use the API
-There are two main options to use the API:
-1. You can send an header called `auth` with the token you received when you logged in.
-2. You can send a cookie called `auth` with the token you received when you logged in.
-
-The dashboard mainly uses the cookie method to authenticate requests.
-But if you want to test the API with Swagger or Postman, you can use the `auth` header.
diff --git a/apps/docs/developer-guide/how-to-add-provider.mdx b/apps/docs/developer-guide/how-to-add-provider.mdx
deleted file mode 100644
index a813633e2..000000000
--- a/apps/docs/developer-guide/how-to-add-provider.mdx
+++ /dev/null
@@ -1,172 +0,0 @@
----
-title: How to add a new provider
-description: How to add a new provider to Gitroom
----
-
-The system is designed to be easily extensible.
-Each provider need to implement multiple things.
-There are two main options:
-- Implement a social media provider (oAuth2)
-- Implement a publishing provider (Token)
-
-
-
- ### The backend logic:
-
-
Define DTO for the settings of the provider
-
Generate an authentication URL
-
Authenticate the user from the callback
-
Refresh the user token
-
-
-
- ### The frontend logic:
-
-
Implement the settings page
-
Implement the preview page
-
Upload the provider image
-
-
-
-
-## Social Media
-
-### Backend
-For our example, we will use the X provider.
-1. First, we need to create a DTO for the settings of the provider.
-head over to `nestjs-libraries/src/dtos/posts/providers-settings`
-And create a new file `x-provider-settings.dto.ts`
-(you don't have to create a DTO if there are no settings)
-Once created head over to `nestjs-libraries/src/dtos/posts/providers-settings/all.providers.settings.ts`
-And add the new DTO.
-Head to `libraries/nestjs-libraries/src/dtos/posts/create.post.dto.ts`
-look for the discriminator and add another line in the format of
-
-```typescript create.post.dto.ts
-{ value: DTOClassName, name: 'providerName' },
-```
-
-2. head over to `libraries/nestjs-libraries/src/integrations/social`
-And create a new provider file `providerName.provider.ts`
-The content of the file should look like this:
-
-
-```typescript For oAuth2 providers
-import {
- AuthTokenDetails,
- PostDetails,
- PostResponse,
- SocialProvider,
-} from '@gitroom/nestjs-libraries/integrations/social/social.integrations.interface';
-
-export class XProvider implements SocialProvider {
- identifier = 'providerName';
- name = 'Provider Name';
- async refreshToken(refreshToken: string): Promise {
- ...refresh the token
- }
-
- async generateAuthUrl() {
- ...generate the auth url
- }
-
- async authenticate(params: { code: string; codeVerifier: string }) {
- ...authenticate the user
- }
-
- async post(
- id: string,
- accessToken: string,
- postDetails: PostDetails[]
- ): Promise {
- ...post the content
- }
-}
-```
-
-```typescript For Token providers
-import { ArticleProvider } from '@gitroom/nestjs-libraries/integrations/article/article.integrations.interface';
-
-export class DevToProvider implements ArticleProvider {
- identifier = 'providerName';
- name = 'ProviderName';
- async authenticate(token: string) {
-
- }
-
- async post(token: string, content: string, settings: DTOClassName) {
-
- }
-}
-```
-
-
-Take a look at the exising providers to see how to implement the methods.
-
-### Custom functions
-You might want to create custom functions for the providers for example: get available orgs, get available pages, etc.
-You can create a public function in the provider for example `organizations` and later call it from a special hook from the frontend.
-
-### Integration Manager
-Open `libraries/nestjs-libraries/src/integrations/integration.manager.ts`
-And add the new provider to either `socialIntegrationList` (oAuth2) or `articleIntegrationList` (Token)
-
----
-
-### Frontend
-
-1. Head over to `apps/frontend/src/components/launches/providers`
-Create a new folder with the providerName
-Add a new file `providerName.provider.tsx`
-The content of the file should look like this:
-
-```typescript providerName.provider.tsx
-import { FC } from 'react';
-import { withProvider } from '@gitroom/frontend/components/launches/providers/high.order.provider';
-import { useSettings } from '@gitroom/frontend/components/launches/helpers/use.values';
-import { useIntegration } from '@gitroom/frontend/components/launches/helpers/use.integration';
-
-const ProviderPreview: FC = () => {
- const { value } = useIntegration();
- const settings = useSettings();
-
- return (
- ...Preview
- );
-};
-
-const ProviderSettings: FC = () => {
- const form = useSettings();
- const { date } = useIntegration();
- return (
- ...Settings
- );
-};
-
-export default withProvider(DevtoSettings, DevtoPreview, DTOClassName);
-```
-
-If you want to use a custom function for the provider you can use the `useCustomProviderFunction` hook.
-
-```typescript
-import { useCustomProviderFunction } from '@gitroom/frontend/components/launches/helpers/use.custom.provider.function';
-import { useCallback } from 'react';
-const customFunc = useCustomProviderFunction();
-
-// and use it like that:
-const getOrgs = useCallback(() => {
- customFunc.get('organizations', {
- anyKey: 'anyValue'
- })
-}, []);
-```
-
-It will automatically interact with the right provider saved for the user.
-
-You can look at the other integration to understand what data to put inside.
-
-2. Open `apps/frontend/src/components/launches/providers/show.all.providers.tsx`
-And add the new provider to the list.
-```typescript show.all.providers.tsx
- {identifier: 'providerName', component: DefaultImportFromHighOrderProvider},
-```
diff --git a/apps/docs/emails.mdx b/apps/docs/emails.mdx
deleted file mode 100644
index e7c7ea455..000000000
--- a/apps/docs/emails.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Email Notifications
-description: How to send notifications to users
----
-
-Postiz uses Resend to send email notifications to users. Emails are currently
-required as part of the new-user creation process, which sends an activation
-email.
-
-* Register to [Resend](https://resend.com), and connect your domain.
-* Copy your API Key from the Resend control panel.
-* Open the .env file and edit the following line.
-
-```env
-RESEND_API_KEY=""
-```
-
-Feel free to contribute other providers to send email notifications.
diff --git a/apps/docs/essentials/code.mdx b/apps/docs/essentials/code.mdx
deleted file mode 100644
index d2a462a7a..000000000
--- a/apps/docs/essentials/code.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: 'Code Blocks'
-description: 'Display inline code and code blocks'
-icon: 'code'
----
-
-## Basic
-
-### Inline Code
-
-To denote a `word` or `phrase` as code, enclose it in backticks (`).
-
-```
-To denote a `word` or `phrase` as code, enclose it in backticks (`).
-```
-
-### Code Block
-
-Use [fenced code blocks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) by enclosing code in three backticks and follow the leading ticks with the programming language of your snippet to get syntax highlighting. Optionally, you can also write the name of your code after the programming language.
-
-```java HelloWorld.java
-class HelloWorld {
- public static void main(String[] args) {
- System.out.println("Hello, World!");
- }
-}
-```
-
-````md
-```java HelloWorld.java
-class HelloWorld {
- public static void main(String[] args) {
- System.out.println("Hello, World!");
- }
-}
-```
-````
diff --git a/apps/docs/essentials/images.mdx b/apps/docs/essentials/images.mdx
deleted file mode 100644
index 4c1517777..000000000
--- a/apps/docs/essentials/images.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: 'Images and Embeds'
-description: 'Add image, video, and other HTML elements'
-icon: 'image'
----
-
-
-
-## Image
-
-### Using Markdown
-
-The [markdown syntax](https://www.markdownguide.org/basic-syntax/#images) lets you add images using the following code
-
-```md
-![title](/path/image.jpg)
-```
-
-Note that the image file size must be less than 5MB. Otherwise, we recommend hosting on a service like [Cloudinary](https://cloudinary.com/) or [S3](https://aws.amazon.com/s3/). You can then use that URL and embed.
-
-### Using Embeds
-
-To get more customizability with images, you can also use [embeds](/writing-content/embed) to add images
-
-```html
-
-```
-
-## Embeds and HTML elements
-
-
-
-
-
-
-
-Mintlify supports [HTML tags in Markdown](https://www.markdownguide.org/basic-syntax/#html). This is helpful if you prefer HTML tags to Markdown syntax, and lets you create documentation with infinite flexibility.
-
-
-
-### iFrames
-
-Loads another HTML page within the document. Most commonly used for embedding videos.
-
-```html
-
-```
diff --git a/apps/docs/essentials/markdown.mdx b/apps/docs/essentials/markdown.mdx
deleted file mode 100644
index c8ad9c1f3..000000000
--- a/apps/docs/essentials/markdown.mdx
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: 'Markdown Syntax'
-description: 'Text, title, and styling in standard markdown'
-icon: 'text-size'
----
-
-## Titles
-
-Best used for section headers.
-
-```md
-## Titles
-```
-
-### Subtitles
-
-Best use to subsection headers.
-
-```md
-### Subtitles
-```
-
-
-
-Each **title** and **subtitle** creates an anchor and also shows up on the table of contents on the right.
-
-
-
-## Text Formatting
-
-We support most markdown formatting. Simply add `**`, `_`, or `~` around text to format it.
-
-| Style | How to write it | Result |
-| ------------- | ----------------- | --------------- |
-| Bold | `**bold**` | **bold** |
-| Italic | `_italic_` | _italic_ |
-| Strikethrough | `~strikethrough~` | ~strikethrough~ |
-
-You can combine these. For example, write `**_bold and italic_**` to get **_bold and italic_** text.
-
-You need to use HTML to write superscript and subscript text. That is, add `` or `` around your text.
-
-| Text Size | How to write it | Result |
-| ----------- | ------------------------ | ---------------------- |
-| Superscript | `superscript` | superscript |
-| Subscript | `subscript` | subscript |
-
-## Linking to Pages
-
-You can add a link by wrapping text in `[]()`. You would write `[link to google](https://google.com)` to [link to google](https://google.com).
-
-Links to pages in your docs need to be root-relative. Basically, you should include the entire folder path. For example, `[link to text](/writing-content/text)` links to the page "Text" in our components section.
-
-Relative links like `[link to text](../text)` will open slower because we cannot optimize them as easily.
-
-## Blockquotes
-
-### Singleline
-
-To create a blockquote, add a `>` in front of a paragraph.
-
-> Dorothy followed her through many of the beautiful rooms in her castle.
-
-```md
-> Dorothy followed her through many of the beautiful rooms in her castle.
-```
-
-### Multiline
-
-> Dorothy followed her through many of the beautiful rooms in her castle.
->
-> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
-
-```md
-> Dorothy followed her through many of the beautiful rooms in her castle.
->
-> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
-```
-
-### LaTeX
-
-Mintlify supports [LaTeX](https://www.latex-project.org) through the Latex component.
-
-8 x (vk x H1 - H2) = (0,1)
-
-```md
-8 x (vk x H1 - H2) = (0,1)
-```
diff --git a/apps/docs/essentials/navigation.mdx b/apps/docs/essentials/navigation.mdx
deleted file mode 100644
index ca44bb645..000000000
--- a/apps/docs/essentials/navigation.mdx
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: 'Navigation'
-description: 'The navigation field in mint.json defines the pages that go in the navigation menu'
-icon: 'map'
----
-
-The navigation menu is the list of links on every website.
-
-You will likely update `mint.json` every time you add a new page. Pages do not show up automatically.
-
-## Navigation syntax
-
-Our navigation syntax is recursive which means you can make nested navigation groups. You don't need to include `.mdx` in page names.
-
-
-
-```json Regular Navigation
-"navigation": [
- {
- "group": "Getting Started",
- "pages": ["quickstart"]
- }
-]
-```
-
-```json Nested Navigation
-"navigation": [
- {
- "group": "Getting Started",
- "pages": [
- "quickstart",
- {
- "group": "Nested Reference Pages",
- "pages": ["nested-reference-page"]
- }
- ]
- }
-]
-```
-
-
-
-## Folders
-
-Simply put your MDX files in folders and update the paths in `mint.json`.
-
-For example, to have a page at `https://yoursite.com/your-folder/your-page` you would make a folder called `your-folder` containing an MDX file called `your-page.mdx`.
-
-
-
-You cannot use `api` for the name of a folder unless you nest it inside another folder. Mintlify uses Next.js which reserves the top-level `api` folder for internal server calls. A folder name such as `api-reference` would be accepted.
-
-
-
-```json Navigation With Folder
-"navigation": [
- {
- "group": "Group Name",
- "pages": ["your-folder/your-page"]
- }
-]
-```
-
-## Hidden Pages
-
-MDX files not included in `mint.json` will not show up in the sidebar but are accessible through the search bar and by linking directly to them.
diff --git a/apps/docs/essentials/settings.mdx b/apps/docs/essentials/settings.mdx
deleted file mode 100644
index ae6e7d6ab..000000000
--- a/apps/docs/essentials/settings.mdx
+++ /dev/null
@@ -1,318 +0,0 @@
----
-title: 'Global Settings'
-description: 'Mintlify gives you complete control over the look and feel of your documentation using the mint.json file'
-icon: 'gear'
----
-
-Every Mintlify site needs a `mint.json` file with the core configuration settings. Learn more about the [properties](#properties) below.
-
-## Properties
-
-
-Name of your project. Used for the global title.
-
-Example: `mintlify`
-
-
-
-
- An array of groups with all the pages within that group
-
-
- The name of the group.
-
- Example: `Settings`
-
-
-
- The relative paths to the markdown files that will serve as pages.
-
- Example: `["customization", "page"]`
-
-
-
-
-
-
-
- Path to logo image or object with path to "light" and "dark" mode logo images
-
-
- Path to the logo in light mode
-
-
- Path to the logo in dark mode
-
-
- Where clicking on the logo links you to
-
-
-
-
-
- Path to the favicon image
-
-
-
- Hex color codes for your global theme
-
-
- The primary color. Used for most often for highlighted content, section
- headers, accents, in light mode
-
-
- The primary color for dark mode. Used for most often for highlighted
- content, section headers, accents, in dark mode
-
-
- The primary color for important buttons
-
-
- The color of the background in both light and dark mode
-
-
- The hex color code of the background in light mode
-
-
- The hex color code of the background in dark mode
-
-
-
-
-
-
-
- Array of `name`s and `url`s of links you want to include in the topbar
-
-
- The name of the button.
-
- Example: `Contact us`
-
-
- The url once you click on the button. Example: `https://mintlify.com/contact`
-
-
-
-
-
-
-
-
- Link shows a button. GitHub shows the repo information at the url provided including the number of GitHub stars.
-
-
- If `link`: What the button links to.
-
- If `github`: Link to the repository to load GitHub information from.
-
-
- Text inside the button. Only required if `type` is a `link`.
-
-
-
-
-
-
- Array of version names. Only use this if you want to show different versions
- of docs with a dropdown in the navigation bar.
-
-
-
- An array of the anchors, includes the `icon`, `color`, and `url`.
-
-
- The [Font Awesome](https://fontawesome.com/search?s=brands%2Cduotone) icon used to feature the anchor.
-
- Example: `comments`
-
-
- The name of the anchor label.
-
- Example: `Community`
-
-
- The start of the URL that marks what pages go in the anchor. Generally, this is the name of the folder you put your pages in.
-
-
- The hex color of the anchor icon background. Can also be a gradient if you pass an object with the properties `from` and `to` that are each a hex color.
-
-
- Used if you want to hide an anchor until the correct docs version is selected.
-
-
- Pass `true` if you want to hide the anchor until you directly link someone to docs inside it.
-
-
- One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
-
-
-
-
-
-
- Override the default configurations for the top-most anchor.
-
-
- The name of the top-most anchor
-
-
- Font Awesome icon.
-
-
- One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
-
-
-
-
-
- An array of navigational tabs.
-
-
- The name of the tab label.
-
-
- The start of the URL that marks what pages go in the tab. Generally, this
- is the name of the folder you put your pages in.
-
-
-
-
-
- Configuration for API settings. Learn more about API pages at [API Components](/api-playground/demo).
-
-
- The base url for all API endpoints. If `baseUrl` is an array, it will enable for multiple base url
- options that the user can toggle.
-
-
-
-
-
- The authentication strategy used for all API endpoints.
-
-
- The name of the authentication parameter used in the API playground.
-
- If method is `basic`, the format should be `[usernameName]:[passwordName]`
-
-
- The default value that's designed to be a prefix for the authentication input field.
-
- E.g. If an `inputPrefix` of `AuthKey` would inherit the default input result of the authentication field as `AuthKey`.
-
-
-
-
-
- Configurations for the API playground
-
-
-
- Whether the playground is showing, hidden, or only displaying the endpoint with no added user interactivity `simple`
-
- Learn more at the [playground guides](/api-playground/demo)
-
-
-
-
-
- Enabling this flag ensures that key ordering in OpenAPI pages matches the key ordering defined in the OpenAPI file.
-
- This behavior will soon be enabled by default, at which point this field will be deprecated.
-
-
-
-
-
-
- A string or an array of strings of URL(s) or relative path(s) pointing to your
- OpenAPI file.
-
- Examples:
-
- ```json Absolute
- "openapi": "https://example.com/openapi.json"
- ```
- ```json Relative
- "openapi": "/openapi.json"
- ```
- ```json Multiple
- "openapi": ["https://example.com/openapi1.json", "/openapi2.json", "/openapi3.json"]
- ```
-
-
-
-
-
- An object of social media accounts where the key:property pair represents the social media platform and the account url.
-
- Example:
- ```json
- {
- "twitter": "https://twitter.com/mintlify",
- "website": "https://mintlify.com"
- }
- ```
-
-
- One of the following values `website`, `facebook`, `twitter`, `discord`, `slack`, `github`, `linkedin`, `instagram`, `hacker-news`
-
- Example: `twitter`
-
-
- The URL to the social platform.
-
- Example: `https://twitter.com/mintlify`
-
-
-
-
-
- Configurations to enable feedback buttons
-
-
-
- Enables a button to allow users to suggest edits via pull requests
-
-
- Enables a button to allow users to raise an issue about the documentation
-
-
-
-
-
- Customize the dark mode toggle.
-
-
- Set if you always want to show light or dark mode for new users. When not
- set, we default to the same mode as the user's operating system.
-
-
- Set to true to hide the dark/light mode toggle. You can combine `isHidden` with `default` to force your docs to only use light or dark mode. For example:
-
-
- ```json Only Dark Mode
- "modeToggle": {
- "default": "dark",
- "isHidden": true
- }
- ```
-
- ```json Only Light Mode
- "modeToggle": {
- "default": "light",
- "isHidden": true
- }
- ```
-
-
-
-
-
-
-
-
- A background image to be displayed behind every page. See example with
- [Infisical](https://infisical.com/docs) and [FRPC](https://frpc.io).
-
diff --git a/apps/docs/favicon.ico b/apps/docs/favicon.ico
deleted file mode 100644
index 317ebcb23..000000000
Binary files a/apps/docs/favicon.ico and /dev/null differ
diff --git a/apps/docs/favicon.png b/apps/docs/favicon.png
deleted file mode 100755
index 57d731fda..000000000
Binary files a/apps/docs/favicon.png and /dev/null differ
diff --git a/apps/docs/github.mdx b/apps/docs/github.mdx
deleted file mode 100644
index f45b05f71..000000000
--- a/apps/docs/github.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: GitHub
----
-
-Gitroom uses GitHub for oAuth2 authentication during login and for the initial stars sync.
-To use GitHub open settings of either your profile or and organization and click on "Developers Settings".
-And it left menu, click on "oAuth Apps" and then "New oAuth App".
-
-In the `Authorization callback URL` add `http://localhost:4200/settings`
-Then copy the GitHub `Client ID` and `Client Secret` and paste them in the `.env` file.
-
-```env
-GITHUB_CLIENT_ID=""
-GITHUB_CLIENT_SECRET=""
-```
\ No newline at end of file
diff --git a/apps/docs/howitworks.mdx b/apps/docs/howitworks.mdx
deleted file mode 100644
index aa1fa7dc4..000000000
--- a/apps/docs/howitworks.mdx
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: How it works
-description: 'Learn the architecture of the project'
----
-
-The entire project is built under [NX](https://nx.dev/) to have a monorepo with multiple projects.
-Unlike other NX project, this project has one `.env` file that is shared between all the apps.
-It makes it easier to develop and deploy the project.
-When deploying to websites like [Railway](https://railway.app) or [Heroku](https://heroku.com), you can use a shared environment variables for all the apps.
-
-**At the moment it has 6 projects:**
-
-- [Frontend](#frontend) - Provides the Web user interface, talks to the Backend.
-- [Backend](#backend) - Does all the real work, provides an API for the frontend, and posts work to the redis queue.
-- [Workers](#worker) - Consumes work from the Redis Queue.
-- [Cron](#cron) - Run jobs at scheduled times.
-- [Docs](#docs) - This documentation site!
-
-
-
-## Architecture
-### Frontend
-The frontend is built with [NextJS](https://nextjs.org/) and [TailwindCSS](https://tailwindcss.com/).
-It works directly with the Backend to:
-- Show analytics
-- Schedule posts
-- Manage users
-
-### Backend
-The backend is built with [NestJS](https://nestjs.com/) with a basic architecture of controllers, services, repositories and dtos.
-It uses [Prisma](https://www.prisma.io/) as an ORM to interact with the database.
-By default Prisma uses [Postgres](https://www.postgresql.org/) as a database, but it can be easily changed to any other database since there are no native queries.
-It uses Redis to schedule posts and run background jobs.
-
-### Cron
-The backend is built with [NestJS](https://nestjs.com/) and share components with the backend.
-At the moment the use of the cron is:
-- Refresh tokens from different social media platforms.
-- Check for trending change every hour and inform users about it.
-- Sync the amount of stars for every repository at the end of the day.
-
-### Worker
-The backend is built with [NestJS](https://nestjs.com/) and share components with the backend.
-At the moment the use of the worker is:
-- Post scheduled posts to social media platforms.
-- Perform multiple jobs coming from the cron.
-
-### Docs
-The documentation website is built with [Mintlify](https://www.mintlify.com/).
-The reference in the documentation is being auto-generated by the backend.
-NestJS has a built-in Swagger module that generates a JSON file with all the routes and their documentation.
-It makes it very easy to track API changes and deploy them.
diff --git a/apps/docs/images/arch.png b/apps/docs/images/arch.png
deleted file mode 100644
index 2a45a0e52..000000000
Binary files a/apps/docs/images/arch.png and /dev/null differ
diff --git a/apps/docs/images/checks-passed.png b/apps/docs/images/checks-passed.png
deleted file mode 100644
index 3303c7736..000000000
Binary files a/apps/docs/images/checks-passed.png and /dev/null differ
diff --git a/apps/docs/images/hero-dark.svg b/apps/docs/images/hero-dark.svg
deleted file mode 100644
index c6a30e88b..000000000
--- a/apps/docs/images/hero-dark.svg
+++ /dev/null
@@ -1,161 +0,0 @@
-
diff --git a/apps/docs/images/hero-light.svg b/apps/docs/images/hero-light.svg
deleted file mode 100644
index 297d68fb9..000000000
--- a/apps/docs/images/hero-light.svg
+++ /dev/null
@@ -1,155 +0,0 @@
-
diff --git a/apps/docs/images/providers/linkedin/linkedin-001.png b/apps/docs/images/providers/linkedin/linkedin-001.png
deleted file mode 100644
index 3226cc136..000000000
Binary files a/apps/docs/images/providers/linkedin/linkedin-001.png and /dev/null differ
diff --git a/apps/docs/images/providers/linkedin/linkedin-002.png b/apps/docs/images/providers/linkedin/linkedin-002.png
deleted file mode 100644
index 18138aa75..000000000
Binary files a/apps/docs/images/providers/linkedin/linkedin-002.png and /dev/null differ
diff --git a/apps/docs/images/providers/reddit/reddit-001.png b/apps/docs/images/providers/reddit/reddit-001.png
deleted file mode 100644
index 7507a0e38..000000000
Binary files a/apps/docs/images/providers/reddit/reddit-001.png and /dev/null differ
diff --git a/apps/docs/images/providers/x/x-001.png b/apps/docs/images/providers/x/x-001.png
deleted file mode 100644
index bd8253a62..000000000
Binary files a/apps/docs/images/providers/x/x-001.png and /dev/null differ
diff --git a/apps/docs/images/providers/x/x-002.png b/apps/docs/images/providers/x/x-002.png
deleted file mode 100644
index 59f0d47c7..000000000
Binary files a/apps/docs/images/providers/x/x-002.png and /dev/null differ
diff --git a/apps/docs/images/providers/x/x-003.png b/apps/docs/images/providers/x/x-003.png
deleted file mode 100644
index d54a5f196..000000000
Binary files a/apps/docs/images/providers/x/x-003.png and /dev/null differ
diff --git a/apps/docs/images/providers/x/x-004.png b/apps/docs/images/providers/x/x-004.png
deleted file mode 100644
index 8e62bf5e6..000000000
Binary files a/apps/docs/images/providers/x/x-004.png and /dev/null differ
diff --git a/apps/docs/images/screens/analytics.png b/apps/docs/images/screens/analytics.png
deleted file mode 100644
index dbd67e75c..000000000
Binary files a/apps/docs/images/screens/analytics.png and /dev/null differ
diff --git a/apps/docs/images/screens/billing.png b/apps/docs/images/screens/billing.png
deleted file mode 100644
index 6df00c535..000000000
Binary files a/apps/docs/images/screens/billing.png and /dev/null differ
diff --git a/apps/docs/images/screens/settings.png b/apps/docs/images/screens/settings.png
deleted file mode 100644
index 6d256c835..000000000
Binary files a/apps/docs/images/screens/settings.png and /dev/null differ
diff --git a/apps/docs/installation/development.mdx b/apps/docs/installation/development.mdx
deleted file mode 100644
index 015b9bf18..000000000
--- a/apps/docs/installation/development.mdx
+++ /dev/null
@@ -1,164 +0,0 @@
----
-title: Development Environment
----
-
-This is currently the recommended option to install Postiz in a supportable configuration. The docker images are in active and heavy development for now.
-
-## Tested configurations
-
-- MacOS
-- Linux (Fedora 40)
-
-Naturally you can use these instructions to setup a development environment on any platform, but there may not be much experience in the community to help you with any issues you may encounter.
-
-## Prerequisites
-
-This guide will ask you to install & configure several services exaplained below.
-
-### Prerequisite Cloud Services
-
-- **[Cloudflare R2](https://cloudflare.com)** - for uploads (optional, can use local machine).
-- **Social Media API details** - various API keys and secrets (more details later) for services you want to use; reddit, X, Instagram, etc..
-
-### Optional Cloud Services
-
-- **[Resend account](https://resend.com)** - for user activation and email notifications.
-
-### Prerequisite Local Services
-
-- **Node.js** - for running the code! (version 18+)
-- **PostgreSQL** - or any other SQL database (instructions beleow suggest Docker)
-- **Redis** - for handling worker queues (instructions below suggest Docker)
-
-We have some messages from users who are using Windows, which should work, but they are not tested well yet.
-
-## Installation Instructions
-
-### NodeJS (version 18+)
-
-A complete guide of how to install NodeJS can be found [here](https://nodejs.org/en/download/).
-
-### PostgreSQL (or any other SQL database) & Redis
-
-You can choose **Option A** to **Option B** to install the database.
-
-#### Option A) Postgres and Redis as Single containers
-
-You can install [Docker](https://www.docker.com/products/docker-desktop) and run:
-
-```bash Terminal
-docker run -e POSTGRES_USER=root -e POSTGRES_PASSWORD=your_password --name postgres -p 5432:5432 -d postgres
-docker run --name redis -p 6379:6379 -d redis
-```
-
-#### Option B) Postgres and Redis as docker-compose
-
-Download the [docker-compose.yaml file here](https://raw.githubusercontent.com/gitroomhq/postiz-app/main/docker-compose.dev.yaml),
-or grab it from the repository in the next step.
-
-```bash Terminal
-docker compose -f "docker-compose.dev.yaml" up
-```
-
-## Build Postiz
-
-
-
-```bash Terminal
-git clone https://github.com/gitroomhq/gitroom
-```
-
-
-
-Copy the `.env.example` file to `.env` and fill in the values
-
-An example file of the most used configuration settings can be found here; [example postiz.env file](https://raw.githubusercontent.com/gitroomhq/postiz-app/main/.env.example)
-
-There is also a [configuration reference](/configuration/reference) page that goes into more detail.
-
-```bash .env
-# Required Settings
-DATABASE_URL="postgresql://postiz-user:postiz-password@localhost:5432/postiz-db-local"
-REDIS_URL="redis://localhost:6379"
-JWT_SECRET="random string for your JWT secret, make it long"
-FRONTEND_URL="http://localhost:4200"
-NEXT_PUBLIC_BACKEND_URL="http://localhost:3000"
-BACKEND_INTERNAL_URL="http://localhost:3000"
-
-# Optional. Your upload directory path if you host your files locally.
-UPLOAD_DIRECTORY="/opt/postiz/uploads/"
-
-# Optional: your upload directory slug if you host your files locally.
-NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY=""
-
-## This is a dummy key, you must create your own from Resend.
-## If this variable exists, user activation is required.
-## If it is commented out, users are activated automatically.
-#RESEND_API_KEY="RzeTwHijvxvPUerScFcenUZUALuQJzSaGSMJ"
-
-## These are dummy values, you must create your own from Cloudflare.
-## Remember to set your public internet IP address in the allow-list for the API token.
-CLOUDFLARE_ACCOUNT_ID="QhcMSXQyPuMCRpSQcSYdEuTYgHeCXHbu"
-CLOUDFLARE_ACCESS_KEY="dcfCMSuFEeCNfvByUureMZEfxWJmDqZe"
-CLOUDFLARE_SECRET_ACCESS_KEY="zTTMXBmtyLPwHEdpACGHgDgzRTNpTJewiNriLnUS"
-CLOUDFLARE_BUCKETNAME="postiz"
-CLOUDFLARE_BUCKET_URL="https://QhcMSXQyPuMCRpSQcSYdEuTYgHeCXHbu.r2.cloudflarestorage.com/"
-CLOUDFLARE_REGION="auto"
-
-# Social Media API Settings
-X_API_KEY="Twitter API key for normal oAuth not oAuth2"
-X_API_SECRET="Twitter API secret for normal oAuth not oAuth2"
-LINKEDIN_CLIENT_ID="Linkedin Client ID"
-LINKEDIN_CLIENT_SECRET="Linkedin Client Secret"
-REDDIT_CLIENT_ID="Reddit Client ID"
-REDDIT_CLIENT_SECRET="Linkedin Client Secret"
-GITHUB_CLIENT_ID="GitHub Client ID"
-GITHUB_CLIENT_SECRET="GitHub Client Secret"
-
-
-# Developer Settings
-NX_ADD_PLUGINS=false
-IS_GENERAL="true" # required for now
-```
-
-
-
-
-```bash Terminal
-npm install
-```
-
-
-
-```bash Terminal
-npm run prisma-db-push
-```
-
-
-
-```bash Terminal
-npm run dev
-```
-
-
-
-If everything is running successfully, open http://localhost:4200 in your browser!
-
-If everything is not running - you had errors in the steps above, please head over to our [support](/support) page.
-
-## Next Steps
-
-
-
- Learn the architecture of the project
-
-
- Set up email for notifications
-
-
- Set up github for authentication and sync
-
-
- Set up providers such as Linkedin, X and Reddit
-
-
diff --git a/apps/docs/installation/docker-compose.mdx b/apps/docs/installation/docker-compose.mdx
deleted file mode 100644
index 8c422f018..000000000
--- a/apps/docs/installation/docker-compose.mdx
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: Docker Compose
----
-
-import EarlyDoc from '/snippets/earlydoc.mdx';
-import DockerEnvvarApps from '/snippets/docker-envvar-apps.mdx';
-import DockerEnvvarGeneral from '/snippets/docker-envvar-general.mdx';
-
-
-
-
-
-The container images will copy a file called `/config/postiz.env` to `/apps/.env` on startup.
-
-# Example `docker-compose.yml` file
-
-```yaml
-services:
- postiz:
- image: ghcr.io/gitroomhq/postiz-app:latest
- container_name: postiz
- restart: always
- environment: # If you want to specify the variables in your compose file.
- - DATABASE_URL="postgresql://postiz-user:postiz-password@localhost:5432/postiz-db-local"
- - REDIS_URL="redis://localhost:6379"
- - JWT_SECRET="random string for your JWT secret, make it long"
- - FRONTEND_URL="http://localhost:4200"
- - NEXT_PUBLIC_BACKEND_URL="http://localhost:3000"
- - BACKEND_INTERNAL_URL="http://localhost:3000"
- volumes:
- - ./config:/config/ # If you want to specify the variables in your `postiz.env` file.
- ports:
- - 4200:4200
- - 3000:3000
- networks:
- - postiz-network
-
- postiz-postgres:
- image: postgres:14.5
- container_name: postiz-postgres
- restart: always
- environment:
- POSTGRES_PASSWORD: postiz-local-pwd
- POSTGRES_USER: postiz-local
- POSTGRES_DB: postiz-db-local
- volumes:
- - postgres-volume:/var/lib/postgresql/data
- ports:
- - 5432:5432
- networks:
- - postiz-network
- postiz-pg-admin:
- image: dpage/pgadmin4
- container_name: postiz-pg-admin
- restart: always
- ports:
- - 8081:80
- environment:
- PGADMIN_DEFAULT_EMAIL: admin@admin.com
- PGADMIN_DEFAULT_PASSWORD: admin
- networks:
- - postiz-network
- postiz-redis:
- image: redis:7.2
- container_name: postiz-redis
- restart: always
- ports:
- - 6379:6379
-
-volumes:
- postgres-volume:
- external: false
-
-networks:
- postiz-network:
- external: false
-```
-
-
diff --git a/apps/docs/installation/docker.mdx b/apps/docs/installation/docker.mdx
deleted file mode 100644
index 3ba5228b7..000000000
--- a/apps/docs/installation/docker.mdx
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Docker
----
-
-import EarlyDoc from '/snippets/earlydoc.mdx';
-import DockerEnvvarApps from '/snippets/docker-envvar-apps.mdx';
-import DockerEnvvarGeneral from '/snippets/docker-envvar-general.mdx';
-
-
-
-
-
-The container images will copy a file called `/config/postiz.env` to `/apps/.env` on startup.
-
-# Create the container on command line
-
-It is recommended to have a local directory where you save your `postiz.env` file, such as `/myContainers/postiz/config`, which is mounted as a volume.
-
-```bash Using a configuration volume
-docker create --name postiz -v /myContainers/postiz/config:/config -p 4200:4200 -p 3000:3000 ghcr.io/gitroomhq/postiz-app:latest
-```
-
-Alternatively, you can specify the variables one by one at creation time. This approach is not recommended
-simply because it's a pain to manage, and sensitive keys get stored with the container definition, which is bad practice.
-
-```bash At creation-time (not recommended)
-docker create --name postiz \
- -e DATABASE_URL=postgres://... \
- -e REDIS_URL=redis:// \
- -e JWT_SECRET \
- ... \
- -p 4200:4200 \
- -p 3000:3000 \
- ghcr.io/gitroomhq/postiz-app:latest
-```
-
-
-
-
diff --git a/apps/docs/installation/kubernetes-helm.mdx b/apps/docs/installation/kubernetes-helm.mdx
deleted file mode 100644
index 819a64981..000000000
--- a/apps/docs/installation/kubernetes-helm.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Helm
----
-
-import EarlyDoc from '/snippets/earlydoc.mdx';
-import DockerDatabase from '/snippets/docker-database.mdx';
-
-
-
-
-Postiz has a helm chart that is in very active development. You can find it here;
-
-https://github.com/gitroomhq/postiz-helmchart
diff --git a/apps/docs/introduction.mdx b/apps/docs/introduction.mdx
deleted file mode 100644
index 67c5e21b4..000000000
--- a/apps/docs/introduction.mdx
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: Introduction
-description: 'Welcome to Gitroom documentation'
----
-
-
-
-
-
-
-## What is Gitroom?
-
-Gitroom can help you launch your open-source tool every week
-
-
Schedule social media and articles.
-
Exchange or buy posts from other members.
-
Monitor your GitHub trending, and so much more.
-
-
-## Architecture
-Gitroom is an [NX monorepo](https://nx.dev) that contains a backend, a frontend, workers, cron jobs and the docs.
-Unlike other NX project, this project has one `.env` file that is shared between all the apps.
-It makes it easier to develop and deploy the project.
-When deploying to websites like [Railway](https://railway.app) or [Heroku](https://heroku.com), you can use a shared environment variables for all the apps.
-
-**It has four main components:**
-- `frontend` - NextJS control panel serving as the admin dashboard for the project.
-- `backend` - NestJS backend that serves as the API for the frontend.
-- `cron` - NestJS cron jobs that run every X to update the database with new trending, refresh tokens and more.
-- `workers` - NestJS workers that run every X to process scheduled posts, sync GitHub stars and more.
-
-
-
- Learn how to install the project and start using it
-
-
- Learn the architecture of the project
-
-
diff --git a/apps/docs/logo/dark.png b/apps/docs/logo/dark.png
deleted file mode 100644
index 1d787f8c6..000000000
Binary files a/apps/docs/logo/dark.png and /dev/null differ
diff --git a/apps/docs/logo/light.png b/apps/docs/logo/light.png
deleted file mode 100644
index 14611589d..000000000
Binary files a/apps/docs/logo/light.png and /dev/null differ
diff --git a/apps/docs/mint.json b/apps/docs/mint.json
deleted file mode 100644
index 4b375a4d9..000000000
--- a/apps/docs/mint.json
+++ /dev/null
@@ -1,106 +0,0 @@
-{
- "$schema": "https://mintlify.com/schema.json",
- "name": "Starter Kit",
- "logo": {
- "dark": "/logo/dark.png",
- "light": "/logo/light.png"
- },
- "favicon": "/favicon.png",
- "colors": {
- "primary": "#000",
- "light": "#612ad5",
- "dark": "#000",
- "anchors": {
- "from": "#612ad5",
- "to": "#612ad5"
- }
- },
- "openapi": "https://api.postiz.com/docs-json",
- "api": {
- "baseUrl": "https://api.postiz.com"
- },
- "topbarLinks": [
- {
- "name": "Support",
- "url": "mailto:nevo@postiz.com"
- },
- {
- "name": "Cloud",
- "url": "https://platform.postiz.com"
- }
- ],
- "modeToggle": {
- "default": "light"
- },
- "topbarCtaButton": {
- "type": "github",
- "url": "https://github.com/gitroomhq/postiz-app"
- },
- "anchors": [
- {
- "name": "Community",
- "icon": "discord",
- "url": "https://postiz.gitroom.com"
- }
- ],
- "navigation": [
- {
- "group": "How to use Postiz",
- "pages": [
- "use/analytics",
- {
- "group": "Launches",
- "pages": ["use/calendar", "use/scheduling"]
- },
- "use/settings",
- "use/billing"
- ]
- },
- {
- "group": "Self Hosting",
- "pages": [
- "introduction",
- "quickstart",
- {
- "group": "Install",
- "pages": [
- "installation/development",
- "installation/docker",
- "installation/docker-compose",
- "installation/kubernetes-helm"
- ]
- },
- {
- "group": "Configuration",
- "pages": [
- "configuration/reference"
- ]
- },
- "howitworks",
- "emails",
- "github",
- {
- "group": "Providers",
- "pages": [
- "providers/x/x",
- "providers/linkedin/linkedin",
- "providers/reddit/reddit",
- "providers/articles"
- ]
- },
- "support"
- ]
- },
- {
- "group": "Developer Guide",
- "pages": [
- "developer-guide/how-to-add-provider"
- ]
- }
- ],
- "footerSocials": {
- "twitter": "https://twitter.com/nevodavid",
- "github": "https://github.com/gitroomhq/postiz-app",
- "linkedin": "https://www.linkedin.com/nevodavid"
- }
-}
diff --git a/apps/docs/openapi.json b/apps/docs/openapi.json
deleted file mode 100644
index 81ddedfb7..000000000
--- a/apps/docs/openapi.json
+++ /dev/null
@@ -1 +0,0 @@
-{"openapi":"3.0.0","paths":{"/stripe":{"post":{"operationId":"StripeController_stripe","parameters":[],"responses":{"201":{"description":""}},"tags":["Stripe"]}},"/auth/register":{"post":{"operationId":"AuthController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrgUserDto"}}}},"responses":{"201":{"description":""}},"tags":["Auth"]}},"/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginUserDto"}}}},"responses":{"201":{"description":""}},"tags":["Auth"]}},"/auth/forgot":{"post":{"operationId":"AuthController_forgot","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordDto"}}}},"responses":{"201":{"description":""}},"tags":["Auth"]}},"/auth/forgot-return":{"post":{"operationId":"AuthController_forgotReturn","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotReturnPasswordDto"}}}},"responses":{"201":{"description":""}},"tags":["Auth"]}},"/user/self":{"get":{"operationId":"UsersController_getSelf","parameters":[],"responses":{"200":{"description":""}},"tags":["User"]}},"/user/subscription":{"get":{"operationId":"UsersController_getSubscription","parameters":[],"responses":{"200":{"description":""}},"tags":["User"]}},"/user/subscription/tiers":{"get":{"operationId":"UsersController_tiers","parameters":[],"responses":{"200":{"description":""}},"tags":["User"]}},"/user/join-org":{"post":{"operationId":"UsersController_joinOrg","parameters":[],"responses":{"201":{"description":""}},"tags":["User"]}},"/user/organizations":{"get":{"operationId":"UsersController_getOrgs","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}}},"tags":["User"]}},"/user/change-org":{"post":{"operationId":"UsersController_changeOrg","parameters":[],"responses":{"201":{"description":""}},"tags":["User"]}},"/analytics":{"get":{"operationId":"AnalyticsController_getStars","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}}},"tags":["Analytics"]}},"/analytics/trending":{"get":{"operationId":"AnalyticsController_getTrending","parameters":[],"responses":{"200":{"description":""}},"tags":["Analytics"]}},"/analytics/stars":{"post":{"operationId":"AnalyticsController_getStarsFilter","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StarsListDto"}}}},"responses":{"201":{"description":""}},"tags":["Analytics"]}},"/integrations":{"get":{"operationId":"IntegrationsController_getIntegration","parameters":[],"responses":{"200":{"description":""}},"tags":["Integrations"]},"delete":{"operationId":"IntegrationsController_deleteChannel","parameters":[],"responses":{"200":{"description":""}},"tags":["Integrations"]}},"/integrations/list":{"get":{"operationId":"IntegrationsController_getIntegrationList","parameters":[],"responses":{"200":{"description":""}},"tags":["Integrations"]}},"/integrations/social/{integration}":{"get":{"operationId":"IntegrationsController_getIntegrationUrl","parameters":[{"name":"integration","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Integrations"]}},"/integrations/function":{"post":{"operationId":"IntegrationsController_functionIntegration","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationFunctionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["Integrations"]}},"/integrations/article/{integration}/connect":{"post":{"operationId":"IntegrationsController_connectArticle","parameters":[{"name":"integration","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyDto"}}}},"responses":{"201":{"description":""}},"tags":["Integrations"]}},"/integrations/social/{integration}/connect":{"post":{"operationId":"IntegrationsController_connectSocialMedia","parameters":[{"name":"integration","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectIntegrationDto"}}}},"responses":{"201":{"description":""}},"tags":["Integrations"]}},"/integrations/disable":{"post":{"operationId":"IntegrationsController_disableChannel","parameters":[],"responses":{"201":{"description":""}},"tags":["Integrations"]}},"/integrations/enable":{"post":{"operationId":"IntegrationsController_enableChannel","parameters":[],"responses":{"201":{"description":""}},"tags":["Integrations"]}},"/settings/github":{"get":{"operationId":"SettingsController_getConnectedGithubAccounts","parameters":[],"responses":{"200":{"description":""}},"tags":["Settings"]},"post":{"operationId":"SettingsController_addGitHub","parameters":[],"responses":{"201":{"description":""}},"tags":["Settings"]}},"/settings/github/url":{"get":{"operationId":"SettingsController_authUrl","parameters":[],"responses":{"200":{"description":""}},"tags":["Settings"]}},"/settings/organizations/{id}":{"get":{"operationId":"SettingsController_getOrganizations","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Settings"]},"post":{"operationId":"SettingsController_updateGitHubLogin","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Settings"]}},"/settings/organizations/{id}/{github}":{"get":{"operationId":"SettingsController_getRepositories","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"github","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Settings"]}},"/settings/repository/{id}":{"delete":{"operationId":"SettingsController_deleteRepository","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Settings"]}},"/settings/team":{"get":{"operationId":"SettingsController_getTeam","parameters":[],"responses":{"200":{"description":""}},"tags":["Settings"]},"post":{"operationId":"SettingsController_inviteTeamMember","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddTeamMemberDto"}}}},"responses":{"201":{"description":""}},"tags":["Settings"]}},"/settings/team/{id}":{"delete":{"operationId":"SettingsController_deleteTeamMember","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Settings"]}},"/posts":{"get":{"operationId":"PostsController_getPosts","parameters":[{"name":"week","required":true,"in":"query","schema":{"minimum":1,"maximum":52,"type":"number"}},{"name":"year","required":true,"in":"query","schema":{"minimum":2022,"maximum":2034,"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Posts"]},"post":{"operationId":"PostsController_createPost","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePostDto"}}}},"responses":{"201":{"description":""}},"tags":["Posts"]}},"/posts/predict-trending":{"get":{"operationId":"PostsController_predictTrending","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"tags":["Posts"]}},"/posts/old":{"get":{"operationId":"PostsController_oldPosts","parameters":[{"name":"date","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Posts"]}},"/posts/{id}":{"get":{"operationId":"PostsController_getPost","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Posts"]}},"/posts/{group}":{"delete":{"operationId":"PostsController_deletePost","parameters":[{"name":"group","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Posts"]}},"/posts/{id}/date":{"put":{"operationId":"PostsController_changeDate","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Posts"]}},"/media":{"post":{"operationId":"MediaController_uploadFile","parameters":[],"responses":{"201":{"description":""}},"tags":["Media"]},"get":{"operationId":"MediaController_getMedia","parameters":[{"name":"page","required":true,"in":"query","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"tags":["Media"]}},"/comments":{"post":{"operationId":"CommentsController_addComment","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCommentDto"}}}},"responses":{"201":{"description":""}},"tags":["Comments"]}},"/comments/{id}":{"post":{"operationId":"CommentsController_addCommentTocComment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCommentDto"}}}},"responses":{"201":{"description":""}},"tags":["Comments"]},"put":{"operationId":"CommentsController_editComment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCommentDto"}}}},"responses":{"200":{"description":""}},"tags":["Comments"]},"delete":{"operationId":"CommentsController_deleteComment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Comments"]}},"/comments/{date}":{"get":{"operationId":"CommentsController_loadAllCommentsAndSubCommentsForADate","parameters":[{"name":"date","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Comments"]}},"/billing/check/{id}":{"get":{"operationId":"BillingController_checkId","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Billing"]}},"/billing/subscribe":{"post":{"operationId":"BillingController_subscribe","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscribeDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["Billing"]}},"/billing/portal":{"get":{"operationId":"BillingController_modifyPayment","parameters":[],"responses":{"200":{"description":""}},"tags":["Billing"]}},"/billing":{"get":{"operationId":"BillingController_getCurrentBilling","parameters":[],"responses":{"200":{"description":""}},"tags":["Billing"]}},"/billing/cancel":{"post":{"operationId":"BillingController_cancel","parameters":[],"responses":{"201":{"description":""}},"tags":["Billing"]}},"/billing/prorate":{"post":{"operationId":"BillingController_prorate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscribeDto"}}}},"responses":{"201":{"description":""}},"tags":["Billing"]}},"/notifications":{"get":{"operationId":"NotificationsController_mainPageList","parameters":[],"responses":{"200":{"description":""}},"tags":["Notifications"]}},"/notifications/list":{"get":{"operationId":"NotificationsController_notifications","parameters":[],"responses":{"200":{"description":""}},"tags":["Notifications"]}}},"info":{"title":"Gitroom Swagger file","description":"API description","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"schemas":{"CreateOrgUserDto":{"type":"object","properties":{"password":{"type":"string","minLength":3},"provider":{"type":"object"},"providerToken":{"type":"string"},"email":{"type":"string"},"company":{"type":"string","minLength":3}},"required":["password","provider","providerToken","email","company"]},"LoginUserDto":{"type":"object","properties":{"password":{"type":"string","minLength":3},"provider":{"type":"object"},"providerToken":{"type":"string"},"email":{"type":"string"}},"required":["password","provider","providerToken","email"]},"ForgotPasswordDto":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"]},"ForgotReturnPasswordDto":{"type":"object","properties":{"password":{"type":"string","minLength":3},"repeatPassword":{"type":"string","enum":["zxKvwYYHO7"]},"token":{"type":"string","minLength":5}},"required":["password","repeatPassword","token"]},"StarsListDto":{"type":"object","properties":{"page":{"type":"number"},"key":{"type":"string","enum":["login","totalStars","stars","date","forks","totalForks"]},"state":{"type":"string","enum":["desc","asc"]}},"required":["page","key","state"]},"IntegrationFunctionDto":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":"string"},"data":{"type":"object"}},"required":["name","id","data"]},"ApiKeyDto":{"type":"object","properties":{"api":{"type":"string","minLength":4}},"required":["api"]},"ConnectIntegrationDto":{"type":"object","properties":{"state":{"type":"string"},"code":{"type":"string"}},"required":["state","code"]},"AddTeamMemberDto":{"type":"object","properties":{"email":{"type":"string"},"role":{"type":"string","enum":["USER","ADMIN"]},"sendEmail":{"type":"boolean"}},"required":["email","role","sendEmail"]},"Integration":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"MediaDto":{"type":"object","properties":{"id":{"type":"string"},"path":{"type":"string"}},"required":["id","path"]},"PostContent":{"type":"object","properties":{"content":{"type":"string","minLength":6},"id":{"type":"string"},"image":{"type":"array","items":{"$ref":"#/components/schemas/MediaDto"}}},"required":["content","id","image"]},"Post":{"type":"object","properties":{"integration":{"$ref":"#/components/schemas/Integration"},"value":{"type":"array","items":{"$ref":"#/components/schemas/PostContent"}},"group":{"type":"string"},"settings":{"type":"object"}},"required":["integration","value","group","settings"]},"CreatePostDto":{"type":"object","properties":{"type":{"type":"string","enum":["draft","schedule","now"]},"date":{"type":"string"},"posts":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}},"required":["type","date","posts"]},"AddCommentDto":{"type":"object","properties":{"content":{"type":"string"},"date":{"type":"string"}},"required":["content","date"]},"BillingSubscribeDto":{"type":"object","properties":{"total":{"type":"number","minimum":1,"maximum":60},"period":{"type":"string","enum":["MONTHLY","YEARLY"]},"billing":{"type":"string","enum":["STANDARD","PRO"]}},"required":["total","period","billing"]}}}}
\ No newline at end of file
diff --git a/apps/docs/project.json b/apps/docs/project.json
deleted file mode 100644
index ff5e925ee..000000000
--- a/apps/docs/project.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "docs",
- "$schema": "../../node_modules/nx/schemas/project-schema.json",
- "sourceRoot": "apps/docs",
- "projectType": "application",
- "targets": {
- "build": {
- "command": "node apps/docs/generate-refrences.js",
- "options": {
- "type": "module"
- }
- },
- "serve": {
- "command": "cd apps/docs && npx mintlify dev",
- "options": {
- "type": "module"
- }
- }
- },
- "tags": []
-}
diff --git a/apps/docs/providers/articles.mdx b/apps/docs/providers/articles.mdx
deleted file mode 100644
index 3642734c2..000000000
--- a/apps/docs/providers/articles.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Publishing platforms
-description: How to add a new publishing platform Gitroom
----
-
-Publishing platforms such as DEV, Hashnode, and Medium don't require any special setup.
\ No newline at end of file
diff --git a/apps/docs/providers/linkedin/linkedin.mdx b/apps/docs/providers/linkedin/linkedin.mdx
deleted file mode 100644
index 0bba5cb98..000000000
--- a/apps/docs/providers/linkedin/linkedin.mdx
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Linkedin
-description: How to add Linkedin to your system
----
-
-Head over to [Linkedin developers](https://www.linkedin.com/developers/apps) and create a new app.
-![Linkedin](/images/providers/linkedin/linkedin-001.png)
-
-Fill in all the details, once created head over to Products and make sure you add all the required products.
-![Linkedin](/images/providers/linkedin/linkedin-002.png)
-
-It is important to have the special permissions or you will not have the ability to refresh your tokens.
-
-Make sure your redirect URL is set to `http://localhost:4200/integrations/social/linkedin` for local development.
-Copy the created `Client ID` and `Client Secret` and add them to your `.env` file.
-
-```env
-LINKEDIN_CLIENT_ID=""
-LINKEDIN_CLIENT_SECRET=""
-```
diff --git a/apps/docs/providers/reddit/reddit.mdx b/apps/docs/providers/reddit/reddit.mdx
deleted file mode 100644
index 950818499..000000000
--- a/apps/docs/providers/reddit/reddit.mdx
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Reddit
-description: How to add Reddit to your system
----
-
-Head over to [Reddit developers](https://www.reddit.com/prefs/apps) and create a new app.
-In the type of app, select `web app` and in the redirect uri, add `http://localhost:4200/integrations/social/reddit`.
-
-Copy the Reddit client id and client secret and add them to your `.env` file.
-
-![Reddit](/images/providers/reddit/reddit-001.png)
-
-```env
-REDDIT_CLIENT_ID=""
-REDDIT_CLIENT_SECRET=""
-```
\ No newline at end of file
diff --git a/apps/docs/providers/x/x.mdx b/apps/docs/providers/x/x.mdx
deleted file mode 100644
index f9f75d46e..000000000
--- a/apps/docs/providers/x/x.mdx
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: X
-description: How to add X to your system
----
-
-X is a bit different.
-They created an oAuth2 flow, but it works only with Twitter v2 API.
-But in order to upload pictures to X, you need to use the old Twitter v1 API.
-So we are going to use the normal oAuth1 flow for that (that supports Twitter v2 also 🤷🏻).
-
-Head over the [Twitter developers page](https://developer.twitter.com/en/portal/dashboard) and create a new app.
-Click to sign-up for a new free account
-
-![X](/images/providers/x/x-001.png)
-
-Click to edit the application settings
-![X](/images/providers/x/x-002.png)
-
-The click to set up an authentication flow
-![X](/images/providers/x/x-003.png)
-
-In the App Permission set it to `Read and Write`
-In the Type of App set it to `Web App, Automated App or Bot`
-In the App Info set the `Callback URI / Redirect URL` to `http://localhost:4200/integrations/social/x`
-Save it and go to "Keys and Tokens" tab
-
-Click on "Regenerate" inside "Consumer Keys" and copy the `API Key` and `API Key Secret`.
-Open .env file and add the following:
-
-```env
-X_API_KEY=""
-X_API_SECRET=""
-```
\ No newline at end of file
diff --git a/apps/docs/quickstart.mdx b/apps/docs/quickstart.mdx
deleted file mode 100644
index c2d7f3e16..000000000
--- a/apps/docs/quickstart.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: 'Quickstart'
----
-
-At the moment it is necessary to build the project locally - some dependencies
-like redis and postgres can run as docker containers, but there is no docker
-container for Postiz just yet.
-
-## Self Hosted installation options
-
-You can choose between the following installation options;
-
-* [Development](/installation/development) - The only installation option that is offically supported at the moment.
-* [Docker (standalone)](/installation/docker) - Run from the command line with Docker.
-* [Docker Compose](/installation/docker-compose) - Run with Docker Compose.
-* [Helm](/installation/kubernetes-helm) - Run with Kubernetes + Helm.
-
-
diff --git a/apps/docs/snippets/docker-envvar-apps.mdx b/apps/docs/snippets/docker-envvar-apps.mdx
deleted file mode 100644
index 314aeaa50..000000000
--- a/apps/docs/snippets/docker-envvar-apps.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
-## Controlling container services
-When the environment variable `POSTIZ_APPS` is not set, or is set to an empty string, all
-services will be started in a single container. This is normally fine for small, personal deployments.
-
-However, you can only start specific services within the docker container by changing this environement variable.
-
-If you need to scale, you can experiement with having multiple containers defined like;
-- Frontend only: `POSTIZ_APPS="frontend"`
-- Backend only: `POSTIZ_APPS="backend"`
-- Worker and Cron only: `POSTIZ_APPS="worker cron"`
diff --git a/apps/docs/snippets/docker-envvar-general.mdx b/apps/docs/snippets/docker-envvar-general.mdx
deleted file mode 100644
index cf1a09714..000000000
--- a/apps/docs/snippets/docker-envvar-general.mdx
+++ /dev/null
@@ -1,15 +0,0 @@
-# Set environment variables
-
-Postiz configuration is entirely via environment variables.
-
-When using Postiz container images, you can specify the environment variables when you create the container (`docker create -e DATABASE_URL=...`), but this might be
-a bit tedious, as Postiz requires quite a few variables set to startup.
-
-It is recommended to use a `postiz.env` file, which the Postiz containers look for in /config. Docker will automatically create this file for you on a
-docker volume the first time you start up Postiz. The default container images will copy the `/config/postiz.env` to `/apps/.env` on startup. Like with
-any environment variables, if you change them, you must restart the application for the changes to take effect.
-
-An example file of the most used configuration settings can be found here; [example postiz.env file](https://raw.githubusercontent.com/gitroomhq/postiz-app/main/.env.example)
-
-There is also a [configuration reference](/configuration/reference) page that goes into more detail.
-
diff --git a/apps/docs/snippets/earlydoc.mdx b/apps/docs/snippets/earlydoc.mdx
deleted file mode 100644
index c6ef810ff..000000000
--- a/apps/docs/snippets/earlydoc.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-
- **NOTE:** This page is marked "earlydoc", or "early documentation", which means it might
- be brief, or contain information about parts of the app that are under heavy development.
- If you encounter issues with instructions found here, please check out the [support](/support)
- page for options.
-
diff --git a/apps/docs/snippets/snippet-example.mdx b/apps/docs/snippets/snippet-example.mdx
deleted file mode 100644
index 089334c54..000000000
--- a/apps/docs/snippets/snippet-example.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
-## My Snippet
-
-This is an example of a reusable snippet
diff --git a/apps/docs/support.mdx b/apps/docs/support.mdx
deleted file mode 100644
index 837f6c860..000000000
--- a/apps/docs/support.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Support
----
-
-Sometimes, things can go wrong, or you need some help!
-
-Note that the Self Hosted version of Postiz is supported by the community in their
-free time, on a best-efforts basis. Please post your question and be patient.
-
-- [Discord](https://discord.com/invite/sf7QjTcX37) - Flexible chat, with screenshots and screen sharing, probably the best option for support.
-- [GitHub issue](https://github.com/gitroomhq/postiz-app/issues/new/choose) - backup option if you are unable to use Discord.
-
-## How to effectively ask for support
-
-Try to follow this guide when asking for support, in this order; **Goal, Environment, Changes, Results**.
-
-- **Goal:** Start off by explaining what you were trying to do
- - _I want to schedule a post on Reddit at 6pm_
- - _I want to run in a Linux container on a Raspberry Pi_
- - _I want to use a custom domain name_
-
-- **Environment:** - Share the relevant parts about your environment. Web App issues; Are you using Firefox, Chrome, etc? Installation/Other issues; a Mac, Linux, Windows, how did you install?
- - _I'm using Firefox on Windows 10_
- - _I'm using a Raspberry Pi 4 with Ubuntu 20.04, and Node version 18_
- - _This is a new installation on a Mac_
-
-- **Changed:** - Most likely something has changed, what is it?
- - _I updated my browser to the latest version and now ..._
- - _I found a change in the latest version and now ..._
- - _I think this used to work, but now..._
-
-- **Results:** - What happened? What did you expect to happen?
- - _I see a blank screen_
- - _I see an error message_
- - _I see a 404 page_
diff --git a/apps/docs/use/analytics.mdx b/apps/docs/use/analytics.mdx
deleted file mode 100644
index af6cbcaad..000000000
--- a/apps/docs/use/analytics.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Analytics
----
-
-![Analytics](/images/screens/analytics.png)
-
-**The analytics page allows you to:**
-- Monitor the amount of stars you get every day
-- Let you know when was the last GitHub trending feed refresh and when the next one will be
-- Cross-reference between the number of stars you got and the launch that caused it
\ No newline at end of file
diff --git a/apps/docs/use/billing.mdx b/apps/docs/use/billing.mdx
deleted file mode 100644
index 78da82cbe..000000000
--- a/apps/docs/use/billing.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Billing
----
-
-![Billing](/images/screens/billing.png)
-
-**The settings page allows you to:**
-- Add GitHub repositories you would like to track in the analytics page.
-- [PRO Tier / Self-hosted] Invite team members to your organization to collaborate with you.
\ No newline at end of file
diff --git a/apps/docs/use/calendar.mdx b/apps/docs/use/calendar.mdx
deleted file mode 100644
index b8f95864c..000000000
--- a/apps/docs/use/calendar.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Calendar
----
-
-
diff --git a/apps/docs/use/scheduling.mdx b/apps/docs/use/scheduling.mdx
deleted file mode 100644
index 8ebe675ea..000000000
--- a/apps/docs/use/scheduling.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Scheduling
----
-
-
diff --git a/apps/docs/use/settings.mdx b/apps/docs/use/settings.mdx
deleted file mode 100644
index ca6b74a0a..000000000
--- a/apps/docs/use/settings.mdx
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Settings
----
-
-![Settings](/images/screens/settings.png)
-
-**The settings page allows you to:**
-- Add GitHub repositories you would like to track in the analytics page
-- [PRO Tier / Self-hosted] Invite team members to your organization to collaborate with you
\ No newline at end of file
diff --git a/apps/frontend/next.config.js b/apps/frontend/next.config.js
index 3df2713a9..34d130dae 100644
--- a/apps/frontend/next.config.js
+++ b/apps/frontend/next.config.js
@@ -20,12 +20,7 @@ const nextConfig = {
hostname: '**',
},
],
- },
- env: {
- isBillingEnabled: String(!!process.env.STRIPE_PUBLISHABLE_KEY),
- isGeneral: String(!!process.env.IS_GENERAL),
- frontendUrl: String(process.env.FRONTEND_URL),
- },
+ }
};
const plugins = [
diff --git a/apps/frontend/src/app/(site)/analytics/page.tsx b/apps/frontend/src/app/(site)/analytics/page.tsx
index ac1170786..951f8bdb5 100644
--- a/apps/frontend/src/app/(site)/analytics/page.tsx
+++ b/apps/frontend/src/app/(site)/analytics/page.tsx
@@ -1,20 +1,19 @@
-import { isGeneral } from '@gitroom/react/helpers/is.general';
-
export const dynamic = 'force-dynamic';
import { AnalyticsComponent } from '@gitroom/frontend/components/analytics/analytics.component';
import { Metadata } from 'next';
import { PlatformAnalytics } from '@gitroom/frontend/components/platform-analytics/platform.analytics';
+import { isGeneralServerSide } from '@gitroom/helpers/utils/is.general.server.side';
export const metadata: Metadata = {
- title: `${isGeneral() ? 'Postiz' : 'Gitroom'} Analytics`,
+ title: `${isGeneralServerSide() ? 'Postiz' : 'Gitroom'} Analytics`,
description: '',
};
export default async function Index() {
return (
<>
- {isGeneral() ? : }
+ {isGeneralServerSide() ? : }
>
);
}
diff --git a/apps/frontend/src/app/(site)/billing/lifetime/page.tsx b/apps/frontend/src/app/(site)/billing/lifetime/page.tsx
index 8df7e8298..916731df3 100644
--- a/apps/frontend/src/app/(site)/billing/lifetime/page.tsx
+++ b/apps/frontend/src/app/(site)/billing/lifetime/page.tsx
@@ -3,10 +3,10 @@ import { LifetimeDeal } from '@gitroom/frontend/components/billing/lifetime.deal
export const dynamic = 'force-dynamic';
import { Metadata } from 'next';
-import { isGeneral } from '@gitroom/react/helpers/is.general';
+import { isGeneralServerSide } from '@gitroom/helpers/utils/is.general.server.side';
export const metadata: Metadata = {
- title: `${isGeneral() ? 'Postiz' : 'Gitroom'} Lifetime deal`,
+ title: `${isGeneralServerSide() ? 'Postiz' : 'Gitroom'} Lifetime deal`,
description: '',
};
diff --git a/apps/frontend/src/app/(site)/billing/page.tsx b/apps/frontend/src/app/(site)/billing/page.tsx
index d7a9722c7..77bfcf7ef 100644
--- a/apps/frontend/src/app/(site)/billing/page.tsx
+++ b/apps/frontend/src/app/(site)/billing/page.tsx
@@ -1,12 +1,12 @@
-import { isGeneral } from '@gitroom/react/helpers/is.general';
export const dynamic = 'force-dynamic';
import { BillingComponent } from '@gitroom/frontend/components/billing/billing.component';
import { Metadata } from 'next';
+import { isGeneralServerSide } from '@gitroom/helpers/utils/is.general.server.side';
export const metadata: Metadata = {
- title: `${isGeneral() ? 'Postiz' : 'Gitroom'} Billing`,
+ title: `${isGeneralServerSide() ? 'Postiz' : 'Gitroom'} Billing`,
description: '',
};
diff --git a/apps/frontend/src/app/(site)/integrations/social/[provider]/continue/page.tsx b/apps/frontend/src/app/(site)/integrations/social/[provider]/continue/page.tsx
new file mode 100644
index 000000000..bead77f84
--- /dev/null
+++ b/apps/frontend/src/app/(site)/integrations/social/[provider]/continue/page.tsx
@@ -0,0 +1,40 @@
+import { HttpStatusCode } from 'axios';
+
+export const dynamic = 'force-dynamic';
+
+import { internalFetch } from '@gitroom/helpers/utils/internal.fetch';
+import { redirect } from 'next/navigation';
+
+export default async function Page({
+ params: { provider },
+ searchParams,
+}: {
+ params: { provider: string };
+ searchParams: any;
+}) {
+ if (provider === 'x') {
+ searchParams = {
+ ...searchParams,
+ state: searchParams.oauth_token || '',
+ code: searchParams.oauth_verifier || '',
+ refresh: searchParams.refresh || '',
+ };
+ }
+
+ const data = await internalFetch(`/integrations/social/${provider}/connect`, {
+ method: 'POST',
+ body: JSON.stringify(searchParams),
+ });
+
+ if (data.status === HttpStatusCode.NotAcceptable) {
+ return redirect(`/launches?scope=missing`);
+ }
+
+ const { inBetweenSteps, id } = await data.json();
+
+ if (inBetweenSteps && !searchParams.refresh) {
+ return redirect(`/launches?added=${provider}&continue=${id}`);
+ }
+
+ return redirect(`/launches?added=${provider}`);
+}
diff --git a/apps/frontend/src/app/(site)/integrations/social/[provider]/page.tsx b/apps/frontend/src/app/(site)/integrations/social/[provider]/page.tsx
index bead77f84..f8f178733 100644
--- a/apps/frontend/src/app/(site)/integrations/social/[provider]/page.tsx
+++ b/apps/frontend/src/app/(site)/integrations/social/[provider]/page.tsx
@@ -1,10 +1,7 @@
-import { HttpStatusCode } from 'axios';
+import { IntegrationRedirectComponent } from '@gitroom/frontend/components/launches/integration.redirect.component';
export const dynamic = 'force-dynamic';
-import { internalFetch } from '@gitroom/helpers/utils/internal.fetch';
-import { redirect } from 'next/navigation';
-
export default async function Page({
params: { provider },
searchParams,
@@ -12,29 +9,5 @@ export default async function Page({
params: { provider: string };
searchParams: any;
}) {
- if (provider === 'x') {
- searchParams = {
- ...searchParams,
- state: searchParams.oauth_token || '',
- code: searchParams.oauth_verifier || '',
- refresh: searchParams.refresh || '',
- };
- }
-
- const data = await internalFetch(`/integrations/social/${provider}/connect`, {
- method: 'POST',
- body: JSON.stringify(searchParams),
- });
-
- if (data.status === HttpStatusCode.NotAcceptable) {
- return redirect(`/launches?scope=missing`);
- }
-
- const { inBetweenSteps, id } = await data.json();
-
- if (inBetweenSteps && !searchParams.refresh) {
- return redirect(`/launches?added=${provider}&continue=${id}`);
- }
-
- return redirect(`/launches?added=${provider}`);
+ return ;
}
diff --git a/apps/frontend/src/app/(site)/integrations/social/layout.tsx b/apps/frontend/src/app/(site)/integrations/social/layout.tsx
new file mode 100644
index 000000000..39b812649
--- /dev/null
+++ b/apps/frontend/src/app/(site)/integrations/social/layout.tsx
@@ -0,0 +1,13 @@
+import { ReactNode } from 'react';
+
+export default async function IntegrationLayout({
+ children,
+}: {
+ children: ReactNode;
+}) {
+ return (
+