From d230e10870476108d044cd894bb9c2575441af51 Mon Sep 17 00:00:00 2001 From: Nevo David Date: Wed, 13 Mar 2024 16:53:06 +0700 Subject: [PATCH] feat: analytics controller --- .../src/api/routes/analytics.controller.ts | 9 +++----- apps/docs/howitworks.mdx | 6 ++--- apps/docs/introduction.mdx | 21 ++++++++++-------- apps/docs/logo/dark.png | Bin 10406 -> 11371 bytes apps/docs/logo/light.png | Bin 10511 -> 11675 bytes apps/docs/openapi.json | 2 +- apps/docs/quickstart.mdx | 4 ++-- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/apps/backend/src/api/routes/analytics.controller.ts b/apps/backend/src/api/routes/analytics.controller.ts index 4bef90ca..c1f3aee9 100644 --- a/apps/backend/src/api/routes/analytics.controller.ts +++ b/apps/backend/src/api/routes/analytics.controller.ts @@ -23,18 +23,15 @@ export class AnalyticsController { @Get('/trending') async getTrending() { + const stars = await this._starsService.predictTrending(10); + const findFirst = stars.find(star => dayjs(star).isBefore(dayjs())); const trendings = (await this._starsService.getTrending('')).reverse(); const dates = trendings.map(result => dayjs(result.date).toDate()); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - const intervals = dates.slice(1).map((date, i) => (date - dates[i]) / (1000 * 60 * 60 * 24)); - const nextInterval = intervals.length === 0 ? null : mean(intervals); const lastTrendingDate = dates[dates.length - 1]; - const nextTrendingDate = !nextInterval ? 'Not possible yet' : dayjs(new Date(lastTrendingDate.getTime() + nextInterval * 24 * 60 * 60 * 1000)).format('YYYY-MM-DD HH:mm:ss'); return { last: dayjs(lastTrendingDate).format('YYYY-MM-DD HH:mm:ss'), - predictions: nextTrendingDate + predictions: findFirst } } diff --git a/apps/docs/howitworks.mdx b/apps/docs/howitworks.mdx index 446052d5..83a69c54 100644 --- a/apps/docs/howitworks.mdx +++ b/apps/docs/howitworks.mdx @@ -3,7 +3,7 @@ title: How it works description: 'Learn the architecture of the project' --- -crosspublic is a tool to convert private communication into public knowledge.
+Gitroom is a tool to convert private communication into public knowledge.
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.

@@ -20,7 +20,7 @@ When deploying to websites like [Railway](https://railway.app) or [Heroku](https Architecture of crosspublic ## Architecture @@ -49,7 +49,7 @@ It's the website for the end-users to see the FAQ.
It contains a simple search bar and a list of questions.
The search bar uses [Algolia](https://www.algolia.com/) to search through the questions.
It uses the style from the control panel to customize the website.
-The tenants cache each pages on the `crosspublic.com/[domainName]` path, it uses a middleware to rewrite the Vercel apex domain or the custom domain to the route.
+The tenants cache each pages on the `Gitroom.com/[domainName]` path, it uses a middleware to rewrite the Vercel apex domain or the custom domain to the route.
### Discord The Discord bot is built with [Discord.JS](https://discord.js.org/) and [NestJS](https://nestjs.com/).
diff --git a/apps/docs/introduction.mdx b/apps/docs/introduction.mdx index b2fbd974..ddb8535f 100644 --- a/apps/docs/introduction.mdx +++ b/apps/docs/introduction.mdx @@ -1,6 +1,6 @@ --- title: Introduction -description: 'Welcome to crosspublic documentation' +description: 'Welcome to Gitroom documentation' ---
@@ -16,22 +16,25 @@ description: 'Welcome to crosspublic documentation' />
-## What is crosspublic? +## What is Gitroom? -crosspublic is a tool to convert private communication into public knowledge.
-Most of your users are not on your communication channels, and they are not aware of the questions that have already been asked and answered.
+Gitroom can help you launch your open-source tool every week
+ ## Architecture -crosspublic is an [NX monorepo](https://nx.dev) that contains the backend, control panel, discord bot, marketing website and the docs.

+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:** -- `Panel` - NextJS control panel to manage your FAQ, it also contains the public website of every user FAQ page. -- `Tenants` - NextJS website that contains the FAQ of every end-user. -- `Backend` - NestJS that operate as the server for both the bots and the website. -- `Discord` - Discord bot that listen to messages, and send them to the backend. +- `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 trendings, In the future there will also be a bot of Slack, Intercom, Telegram, and more. diff --git a/apps/docs/logo/dark.png b/apps/docs/logo/dark.png index ee9a3d43d9065963255d394cf0ec4e3f88929e6c..52ed5da277db871d5237f9ea184d13999b37c438 100644 GIT binary patch literal 11371 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 literal 10406 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 MIaS$8X_Mgp1^f*twg3PC diff --git a/apps/docs/logo/light.png b/apps/docs/logo/light.png index da52061a033fb670a28c9587fe6fb89eab5427c3..041e2a8c1abdebc40c44913efa83ee32bd0f1158 100644 GIT binary patch literal 11675 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 literal 10511 zcmbt)1yEaSyDsitT!TX?4K67b+}+w@X$Vph+}*7$6etuaPI33*t}RY+DYUp-@LszA z{qH&F%(?f@JvTEe>sxC*-}AoDYsq91rLCz%h)0Wuf`US*qAaiba2|L##Bs15-d&O` zSsqTfj>^wnP*Ct6{W(xkQa@3npkVUY>KnTnYp8>u4v41^ONUpmr=AGM2Q&(bgtVt4 z1ZoF!1-yb;+uBRA95%PJ0BkKKS&W1=_%s~lU^ceO-p(*RZ%uuuw;fd6l0{kyAmIsm zAV9!eAplPV+};J`DarB|FX&K@?g=~(h8(2ulTpUhbu`I z8&_9H5D@6$;qlZ%@Tr5dHIQFiTpY+J02C15eL(QKc-gx`JbCS1SpUr+4|9P!+d8`1 zI@kmLFhX8AxVcKQJb3#r83@OJXzgA84%I`@fSwRXApcXoKeGM;T0;N9Il4K+|1xd~ z1;XGk1kB#mo_kMW?sN0{k|9ijX|KolwXWNI? zgTVjCJbxPUPrZPYZCxHR>GgNJ=)s)+Ucqevf0YOb0{v6^k}S|aIfq%Y{C(T@e;k2- z(R$dx9!UQW>HZhY#lgze1L6z=TR%kW|F71756XalI{05Af&W$iU(fzSxBnadFhc$; z|CwJ87ynE^nEk`pbAFg_+fYY;6cpBI6?w3}=coO2j}Q9OcOBBmy6u`o($o{lM zxAeK-WKYcvmyu_JE}Kgp<~PeX2&5!EcU4|b9N85waP+C~X$yP%mt7`-UyU%QM=6!= zEAg%kKHCZ(-?J(?Y#(Gyw^gq-j5R6;NZl_-vmSb%$Mt`#Fh%9z$>cw5wF}=ECy|vI zBQ8dpxC$>*ky&35kEj3rhHG`XXT;u&?OE7*nOmkt>*{=FySQzZ;xXy^>aWew>Hz;q zX#GLhtwd$1rrqYi@zM`9R2}#A9QW52bK&O^^ghFT9^AY?Tbw}fxwrH}ICo0{=?+WY z!;fN!LVYa)CdXNoVwPfA95F3Dp045zwFsA7i2oeop`6d}PL9J$h(_0T$FMRG9*Sh% z0!n(tc%5r#fl#D)3ut~_j%543q%$*Wg?7<+tkkJfhl78QtE-jf*>v%@@NdJVRO(oU z7D&3Wv!$gr;iuOx@7GW~-S~t^Z21$KD?3K6#hrcS+9*)xbd3bEJX+pn01IzQ!FgovmA zH=x;6roKUlDAo5H>`+KZ2s;ttB`Ma`5DWf(vF|T^YiI$uQ=(j(bVqRISj3^lj>}RB@5*_Td7Q z9!b^G?-$hjev`c(nTTSeOXlM1OG4bq1uQnQIE-XgBvSCXs+cLTTJf&XM~x-Y9N`)~ zUQw8%5N(P0 z(@%|ekNJBH6Ape4k91l`c;N9yz2^??$Bt3Pm&4MhXkm6NHI-r(cXqY8Il^93nJ zFDm|2V9<_1O-L)6$Feq{Sq?ExB)%n87QOiOfT(U&{?hHK!eM*+ zPN3ff!@%AI9#*l6yD>AlTnAAkfdq}u;t%-T3GQ?pMhG?`_;4lm!sdhL5Xb6ymBBD) zxu?uWi=eeh9XHHjLy{G`m^R;$rSH;Ajo)y|L;8sa823m9Xqd&_sa}khSX%7>?R{=q zky28wUH)<@I{L9%L62!H@?O8HtIy@^lv;bSLq_=vK^hzqKE~(%#C=?e+>?#BNX)ET zZpx@*L!QouqXaD4QLlXqnx)jNiLRcJsb%+Aw%?@Tnta-dE*EAA_rOFa?9c=@hmfqI z@3>E1+|ym662He7nt(ZF@tc|v)S{Mc|Nd%bFA8k^)?+_EN@gK#fuj9>xd3mKH47$M zSH;5`+0E~9d!2d6dwX=#eZknrtiT~#D5M6I<&xJWvr{5->QIqKrgUvmWa=0ht1lEn zo)o@2;e^p2k0%VwFt8NMcefxI>DMa!?v{`twIB>Ljw1ps53zzE}GG)|Q zhW86;{gh(y)a+L3AbscDncAmf^oFk4(bWc2LB;f*@J6I;BX?=Nf*%R?Y2!l_=?yj>EA05dWbrtjjT>DlGDvs&UKZYJ@(Pstopo#Gcw{$h6v_#g7y znZCdAYb2vaHJRUSy$5|l0HmCDSKL%TSZ7Pt0}s#Rnx-%_jXGIj5lbFuc)xMM6E<6U+8)!aWZ^l%}?|5 zi=6=*{5q$EIxlp`GZdlPVBYsJC<=fs+Sh7y&I#{u2xUs!Zjj%Lm4IC@3Bn^P=GX>t z~?bA9}aSEjGU-bgUza#infhovc93( z_R^TPhX)oP6|e?$uEh9#V5kzo`e}DIBhgY@n&izcZ*!{Dvmq5+^#eWCkG(~D%_cP$ z*RnR{Bs6onyRRde#S+SsBNeXhh7%PtzZkPdM`wZI%r*p*-5Z-gNI*yKv94B$?jefYZ5)JAUq z$8Va(dRgp`=T0~6nB@o1^bucTPirF{q^eALz~1K-sk^O3{PR{t(#M3X}9NE*fk9MZm6$q`obs@Ewm7_YEHQ}95z zj!kns!xC$X05N<*U97~vnMw=^jPRb@Fxt|25cK+h0r|~q8_R7}=W-bDeQ~%g?p~i& zutDOb(&6y+Fw>7ZmqTj=Bp@ays0!2n0{GMtoG{Yr&2m zmvW8AT=CbD3Y^YED6Go+_0Vq7OHPQsbWa^NBvX{}CAPI5Yi$7_FS}O3u|DXCs;fBj zzW2r57D2X85LXOCZ&mzk((Z?*qhJ?rP)qQWUqEzGcfCUjKpN3Znx;~(!Dg3aSu!TD z9ND+f?R{7M!TOYq!kXLsO>;Y}(S0bRBkv4(ptzWcf^EswUXlh%|I(87+kLgTkG=86 z53RB-0>Q96?B1TY@WyL&_;As6h3Q`W<=YkXl`Ix|Q`T{MCHrMfCo!4TwUWZN>xK`p zY4Xs#_*NKxL}HRtmexA7e{?;F<8Q9)P`xZRw+CAxh#Z!Ry z8=y_z_GypK!D^yYFIjxO^nj?UnekNAQe@d2Tk{~_Oi1m@#svM;Z}H7b%&GOA0c-1` z$rRg;$&SY+29DU}8poh=hN(pJRd06zC)Ojfa&J$kf|H~tyB?nJUQh1(CoLcDyRP_* ze${Q0UdohnR7z3r$2<_H$Gt_jK}iktYRo8k*)+F7Dp`9a9Qu{a?Y?&yzoKb(nTknU z@dGI}b)PD`GNOp3eQbD(iBWYm`7mM1kE?cF^yOTJ&=(yZi*V6QV>;C3b>=nRehA(;&dOVhyf8c?#n$0-cJQyiH)t{U4Yz)kj83e~Y(U39FB5|g zZQzJwf-Cv!2fgMbfth^*Lwb&=Ct_GRZueco8Ii;+=YcmUIKor0=b2?ziy1!F&+ZEx zB^j5hXvD~n!4hhtkEixK7)*!!iEfJ{yw#k-0F#zUAGe?H`=B&(+_jR=aLv?|wgXO{t!SGWSUo5!9jhFR8@FeaTdM~Xy_>ys+;RN;{*g?***;?v712OB<%Cc|%9&fzO$0D$ICZ0N-rmK!d3B1)y_d|XufYjaYW+@@a!tRs|~XAw?{p&v7g zCfx2#ekd4AYIIlIz;0V)pXc^cxX2TayF-&*r8jprN=z5;EHGkqzM;^(Ay}y|W1zz+ zm+Rf*v5mmb%n0B}l8A8|qwrX?h#hf{7ANFTnz}g$_xo#{%;@U#;LT462PV#1Ko?(? zf#`tGF*}vzv-=DQzGhkLIs`3WGqGF2YK#oSqT(|_B5OfL36E6^pN!>bzZkdl4p4ck)JX#K&h2JXuqcGi9`bp0(u!SyG={XL5&1~4m|RoezE02UV0!4R{4_cLKQfUrU$NY7ZE z#fr47nECli;M#HaC7M{$J6Cuft4i-WTP^|zV>y^4%xhBaCQ?B$SLY)XZ$XX%^sjoKy$v>YX|5C(!SmN!u}#jkqQ z``d@_kL_*t&Lq$>c=?ifKXXnJLKeM(+USK5%@ zAW7a>q35NNbY2suGJVBg-ugY!F33ahgZYQ-()6zfP$v5)1)K!#ir38(3EmeJkv zk^HPqsjp@Y2yvD|Ug(BHgO?V=`4FMJomFu~Y_l9q#W}@f&nWuc;cwR@@C-*_KNfhd zavUF@@yIJe2MW;<96j(#gU}rX4u(%B?;?v6ZE|x9v6Gl1_OY1>b-a4p6&Cujvxz(M zD5yI0qI%cc(rA96e5H zl}L9uf!mM5cZ@{pIOtOJtJQOtDOZU*Rs?Swq|3G4I21O+A#h_r23FZCqtd#k93 zSFgNY9wa(|DeEWQ;Ze{RFZ78x0}bFQbY8*Xw-39K`|{aJg* zO>@;&!tFzkqX3Y`15fU2-J(hCE5itj%>vJe!51s&i8yQlbzk2uxwh=jS+^B;5sI30 zul&BJ7)8{pPwB1-o0#4Zx-0gZTNgm)6RJd?sCl8jpXO3sXZLZC3O_i%S3&df@8K!kkCQGKcHm={L;3W}o&NO%X zLyylF7KbI@plGZ@E~AH8PZCNHApyxzR*{Lr5C&`K4a{T(7#9q%;_xuu znuToDV@?5gm2w&*_YsVEa^Twxl;ZhN4k-CGTd_IV8-p5fPHv+ihOXw+5~5;17w+V_ z?m5bbkdo1Xkjiomq>rMEY^>~7Y9y`Gey&(2x=C*pnbZA={aLzMZycmsjaWR3@m);g zjZUji@6gEmDo-}UUb?pNJaKJjnqvFTzhbg!u0D=eCbewFzK?;on&z0nvL;2d>l_ev zxua+MEE(+<$FoXrj?PzDaS|+T;;`Z>fIq0$fvnl<-+ew*lOq}M^OA`{;`A71zIZ+F zAEJ1sq@h}gDW#EPOf-?il@vy4r|3q%rWh#Fuc%DNnHYR4cAXWMysxpUm81HI6AkgfdtuOR@&FeldSM{a!EcFK0LBGYr{sh;n6JDR3DSY1{ynHw-yfAJzF{taj5lsR`v>75Viuk$> zVQLFE)TUOw+rOVA`sB2E`-^TyWPicIMmmq1Uqb}|82{X(I+y$dFla0o4b8CwheG3` zaW3cugIn|8t|#_q$h;sFyXTYYXDOU5td}e52b2a`&0)a7j3Uh6I0Cb@>$r8{(XJ6J zOB{vIFT=t#(duWqmRY?{-mDi^r_FjqhQQ<`tR^dDz~^!aIRO2LN=i8l;Ul#V7iF{4 z!ZsdKo^^+N+r%J4as{58vbq>-#>@GuLH7it6`6K@T176^a(Ic4b(2NIkNns0u2v`A z#)E#jS(>Al;~ERVb;T}dV{UAik4p^3h-HEGeDVRJvHWZHjsAzXTyAB!!Kj(%JCf3i0f()_Ql;h}W90F} zlx5?qWemtM$hHYtDF}z70S1^_1H-8XFU387GJb8mB=hKSuwyAzmYB%SEGDHSTM`!Gpp>`-Tsb80rHS*8j zIYAeL3ULp`PhAVS@blQ-IwO#a=n8yo@{Og|;UOuej1fh>e%&jZqkBDTM(-mecEH$? z4#fl|b(1C=M`Z8ko2{1%U_7S!qj=?>!O_#|wMi_)irY`aqv?G`(o)#%Yf61AHoEaZ z%&TZwns|vHtBFJq1zii7HfG${F(roL94{sfEeA;?B5qShjo3Zc_mPA65jI-vV?v1^ zIBXQPc_?V%DpgATo9Eh9bulM>7~fd~q@*2x#QuIfL>H&B-Sz?7^K86d`LlqxNDa+I zYsyi^H-q_eD-eTcHPymyR?TW1`VC6vMYg{+Fe%UD6bO2I0hi7E_?doDhi`IVa$tnC zmU70*I3{huFt&unY7NqM5YZ;{VXwCH??smed3tJE+Ga=-nkeChoAig{+YI%8ByuvTX8u43e4uJ zs_)PA=%b&gWIx5B3(neE{m4zw-?LCp_!&-8###{~@-E=XU8I{Ep@p)L2IuEO`8?TH zR%I?cXfRfIc2#wC#<>Rn2~(zvduQo(Kq8%;$z~9V{fbqe=XJ_v4a0Af#m2sujn}r4 z_OX)*4Ooi=Gh7F~=8+{l6|62O$0jDwQ~##SAS2@2FKW*j%HMxNk&r_YOB#>NEPcjz zTo=Kwo|@~>oY_=0$u@bntMDSsC%65(M%v_L=C^IXed^=#+?zt=e&fM(etTr^#Kd9?8A~U0eD^lL`lkUxq^UoX@{hQOeD5adTzm&8lT%)6?f?-0#JI2HIzs z)UKek$goBw zA$xlmP_N0W`rN!{&v=)9*)Gz&N%2ITDM>_JcYbvJ`0Yj*7=u>(j6|0_NkV#kjCI7< zeLQDVgx;{xgC;0Yvvw()J)UJxM~5Pc*TB_0uqhlQ^`b7sPl@6^6W7`$4d;oyK=>C| z=KBvSZAQ5=!M|`S<3ok8D@a0h-8_St-PK!?l3;{y4U1D+8HP$|Q}ka%mf@r##y(qy zn!{ve3YLR35(y)1;!^_D@RjPKpf3)d5&w4C8@hF&Ga|Xp5pl~;-^)nPm`yTs=S)$o zZNtMpyFUh}i_?h)3Fyfj_jeREzUV4xtT!e%LV48q8b)S>7@k+LRQE6nRDMxNDdn^A zBO)F2+G(<2x`#|8C@?5QQ%(PUwGesss+hLE{@3Esw4$=tvUZ59fS?HIQ>lcBsGF=b zvUbG!jJ_-W+ej6epsdNr8SSE_UD}=RJ=85w!eKXJV7Z-@rx>x`xNRM#E-3-=_FF<4 zeYMVsdBfLGZcV?nk(!HC@pBq$B{JLjZ6xg1B~w=?MKBz#XqEOZcD=ZB*a^yG=Y(E- z>L}^>d=QkY?fTkn{EaoE$giI|hr$(Q%#0l!)jDf$3`At*zs6* z?JxU+#m6$bXgHLu&flj7`(sSzTiQ}R<;eyF$6Oy~3TMg@3f_;vkG(v(LJf*s1`8^_ z*Zgu94Bt?Zi}GT7a&~rd$J9NkIm!D(MaP@EOUYVild)V+k7`7ijg5=6caUTa*+PXn zlvCOih3cJ6*AJiQIwQ@S(M;;nn@2{akLiZ5V@nLg+k8sVIVPTcbhm!uoh&-Jj*f*v zBD_RFHTvvytUHFTxzHBMFfIZHz%4xW*L2b?7q!3x!{O27!!xz~rRu#@c7QLI%)JpB zua3<9V@G+$9*e}QisdP$%elNp(O?30@1E-FZdv;$$|)p-%#7jqU|yMlyGW;!@#uDQ z*whmq0VR%m2KyOLD)iGe9@}n&vMOP}bb|7VPTY*kb2i)2ZT*4<=wqhNn@|Ldw@k() zyWd_mq=`&Fa-hHnW|S~{=lK=DNW3cQdwa7k7MG{upB-KC8SmzsD6Xbt@|Zc3EH9Vk z)X(*Cwf;)CIVI|1)#n+pWlo*Jst?~}%+-k@P>Vx)*%}tr!sMwcf!_O@~}7X zqR6++{t1tvH{Wb%bV^GI+H}%$ul~|E?1ag~)9UZ|saO^P8s7S5q$Tb=&!4+ezAz!5 zW57&)vWhI~$)SaqClk*+equsVP}m;KIKfvuRJHOl6yzq*eSd;;heZTksHPYQ)$j*L z>SlJWc@Ksgf(LSS_a0pefv5DjSC$ors=w@PJm;kM+>*k7T|e_fIVGbykyXjitXHFZ zj!CrKndE@}GS{hqomlPnN85?{k7wKCxv5ywbqAAfl((mOtg(`ivt0v<{hpWlC*6#} z{$a-ItZ@V<*Uq>CVVqekC&C|2-c|17OWd6lUY7>T`+ZnjTWA+_ zl*HF!1gyNW-~#!CE_Fb!>fK!xPWqK9B-aLViG5ur!&OD^1g+n1J{TExNYbO_qicW61&m$Q!E|A4Jvizv(0Wnpm7A8C^ynS^Z^E{5o>_8(u|;ZDMwiAzV!hE+ zx9j9~ho=r;HujJ=@Z!{N31kxS$pT3Uokuv`+n zTlu{*9ifrZ_PaSv^uUpBNJS~;H`&Ui@K|d8m^KsV1QAkN0M_^1`ki-vOABEvH_ZZ* znSVj(#yd(Ddem=V;>VtnjCg3l3Uyd&sV(&SHsddrVmQb*KN6cdAN@Q$Z15ZoXJ|aU zpCwdEVeNlf{c<^>{PmbN@jk*4*&Q)*JN}kb%P3KannG2_Ag(_FA1|8=jZMcjEU-L? zCE0u(5=eZu;jRx!7OW6+pD??Ly|;Mjr7^!a@W;)k%?dId?-GQjtnzz=aG>gefGu1p>oa*p{KXTA0mBq#~L$Do$05jV0`a{&p)huzg5pfzr{puW@?}l(EwP*Q`7=Z4#llY4>YgQ{5~e&n?`pnod5wc<_3-fdjDGb|^tA zXj>lTGUVp7_{Fa-LV>B)T>5I+cJhRS$h;M@ZT)4-Gv-j}H!(Li2-oz{&gh@NEUGAI K%9qPp1phD0aAZ6H diff --git a/apps/docs/openapi.json b/apps/docs/openapi.json index ebdb91d7..81ddedfb 100644 --- a/apps/docs/openapi.json +++ b/apps/docs/openapi.json @@ -1 +1 @@ -{"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":"crosspublic 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 +{"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/quickstart.mdx b/apps/docs/quickstart.mdx index 9002eca0..1aaa04eb 100644 --- a/apps/docs/quickstart.mdx +++ b/apps/docs/quickstart.mdx @@ -60,7 +60,7 @@ Create a new [Algolia](https://www.algolia.com/) account, head over to the [API ### Clone the repository ```bash -git clone https://github.com/github-20k/crosspublic +git clone https://github.com/github-20k/Gitroom ``` ### Copy environment variables @@ -69,7 +69,7 @@ Copy the `.env.example` file to `.env` and fill in the values ```bash DISCORD_CLIENT= DISCORD_TOKEN= -DATABASE_URL=postgres://root:your_password@localhost:5432/crosspublic +DATABASE_URL=postgres://root:your_password@localhost:5432/Gitroom BACKEND_URL=http://localhost:3000 NEXT_PUBLIC_BACKEND_URL=http://localhost:3000 BACKEND_TOKEN_PROTECTOR=