├── .editorconfig ├── .env.example ├── .gitignore ├── .prettierignore ├── .prettierrc ├── README.md ├── apps └── server │ ├── .browserslistrc │ ├── .eslintrc.js │ ├── README.md │ ├── astro-i18next.config.ts │ ├── astro.config.ts │ ├── package.json │ ├── playwright.config.ts │ ├── playwright │ └── index.spec.ts │ ├── public │ ├── common │ │ └── assets │ │ │ └── flags │ │ │ ├── 1x1 │ │ │ ├── ac.svg │ │ │ ├── ad.svg │ │ │ ├── ae.svg │ │ │ ├── af.svg │ │ │ ├── ag.svg │ │ │ ├── ai.svg │ │ │ ├── al.svg │ │ │ ├── am.svg │ │ │ ├── ao.svg │ │ │ ├── aq.svg │ │ │ ├── ar.svg │ │ │ ├── as.svg │ │ │ ├── at.svg │ │ │ ├── au.svg │ │ │ ├── aw.svg │ │ │ ├── ax.svg │ │ │ ├── az.svg │ │ │ ├── ba.svg │ │ │ ├── bb.svg │ │ │ ├── bd.svg │ │ │ ├── be.svg │ │ │ ├── bf.svg │ │ │ ├── bg.svg │ │ │ ├── bh.svg │ │ │ ├── bi.svg │ │ │ ├── bj.svg │ │ │ ├── bl.svg │ │ │ ├── bm.svg │ │ │ ├── bn.svg │ │ │ ├── bo.svg │ │ │ ├── bq.svg │ │ │ ├── br.svg │ │ │ ├── bs.svg │ │ │ ├── bt.svg │ │ │ ├── bv.svg │ │ │ ├── bw.svg │ │ │ ├── by.svg │ │ │ ├── bz.svg │ │ │ ├── ca.svg │ │ │ ├── cc.svg │ │ │ ├── cd.svg │ │ │ ├── cefta.svg │ │ │ ├── cf.svg │ │ │ ├── cg.svg │ │ │ ├── ch.svg │ │ │ ├── ci.svg │ │ │ ├── ck.svg │ │ │ ├── cl.svg │ │ │ ├── cm.svg │ │ │ ├── cn.svg │ │ │ ├── co.svg │ │ │ ├── cp.svg │ │ │ ├── cr.svg │ │ │ ├── cu.svg │ │ │ ├── cv.svg │ │ │ ├── cw.svg │ │ │ ├── cx.svg │ │ │ ├── cy.svg │ │ │ ├── cz.svg │ │ │ ├── de.svg │ │ │ ├── dg.svg │ │ │ ├── dj.svg │ │ │ ├── dk.svg │ │ │ ├── dm.svg │ │ │ ├── do.svg │ │ │ ├── dz.svg │ │ │ ├── ea.svg │ │ │ ├── ec.svg │ │ │ ├── ee.svg │ │ │ ├── eg.svg │ │ │ ├── eh.svg │ │ │ ├── en.svg │ │ │ ├── er.svg │ │ │ ├── es-ct.svg │ │ │ ├── es-ga.svg │ │ │ ├── es-pv.svg │ │ │ ├── es.svg │ │ │ ├── et.svg │ │ │ ├── eu.svg │ │ │ ├── fi.svg │ │ │ ├── fj.svg │ │ │ ├── fk.svg │ │ │ ├── fm.svg │ │ │ ├── fo.svg │ │ │ ├── fr.svg │ │ │ ├── ga.svg │ │ │ ├── gb-eng.svg │ │ │ ├── gb-nir.svg │ │ │ ├── gb-sct.svg │ │ │ ├── gb-wls.svg │ │ │ ├── gb.svg │ │ │ ├── gd.svg │ │ │ ├── ge.svg │ │ │ ├── gf.svg │ │ │ ├── gg.svg │ │ │ ├── gh.svg │ │ │ ├── gi.svg │ │ │ ├── gl.svg │ │ │ ├── gm.svg │ │ │ ├── gn.svg │ │ │ ├── gp.svg │ │ │ ├── gq.svg │ │ │ ├── gr.svg │ │ │ ├── gs.svg │ │ │ ├── gt.svg │ │ │ ├── gu.svg │ │ │ ├── gw.svg │ │ │ ├── gy.svg │ │ │ ├── hk.svg │ │ │ ├── hm.svg │ │ │ ├── hn.svg │ │ │ ├── hr.svg │ │ │ ├── ht.svg │ │ │ ├── hu.svg │ │ │ ├── ic.svg │ │ │ ├── id.svg │ │ │ ├── ie.svg │ │ │ ├── il.svg │ │ │ ├── im.svg │ │ │ ├── in.svg │ │ │ ├── io.svg │ │ │ ├── iq.svg │ │ │ ├── ir.svg │ │ │ ├── is.svg │ │ │ ├── it.svg │ │ │ ├── je.svg │ │ │ ├── jm.svg │ │ │ ├── jo.svg │ │ │ ├── jp.svg │ │ │ ├── ke.svg │ │ │ ├── kg.svg │ │ │ ├── kh.svg │ │ │ ├── ki.svg │ │ │ ├── km.svg │ │ │ ├── kn.svg │ │ │ ├── kp.svg │ │ │ ├── kr.svg │ │ │ ├── kw.svg │ │ │ ├── ky.svg │ │ │ ├── kz.svg │ │ │ ├── la.svg │ │ │ ├── lb.svg │ │ │ ├── lc.svg │ │ │ ├── li.svg │ │ │ ├── lk.svg │ │ │ ├── lr.svg │ │ │ ├── ls.svg │ │ │ ├── lt.svg │ │ │ ├── lu.svg │ │ │ ├── lv.svg │ │ │ ├── ly.svg │ │ │ ├── ma.svg │ │ │ ├── mc.svg │ │ │ ├── md.svg │ │ │ ├── me.svg │ │ │ ├── mf.svg │ │ │ ├── mg.svg │ │ │ ├── mh.svg │ │ │ ├── mk.svg │ │ │ ├── ml.svg │ │ │ ├── mm.svg │ │ │ ├── mn.svg │ │ │ ├── mo.svg │ │ │ ├── mp.svg │ │ │ ├── mq.svg │ │ │ ├── mr.svg │ │ │ ├── ms.svg │ │ │ ├── mt.svg │ │ │ ├── mu.svg │ │ │ ├── mv.svg │ │ │ ├── mw.svg │ │ │ ├── mx.svg │ │ │ ├── my.svg │ │ │ ├── mz.svg │ │ │ ├── na.svg │ │ │ ├── nc.svg │ │ │ ├── ne.svg │ │ │ ├── nf.svg │ │ │ ├── ng.svg │ │ │ ├── ni.svg │ │ │ ├── nl.svg │ │ │ ├── no.svg │ │ │ ├── np.svg │ │ │ ├── nr.svg │ │ │ ├── nu.svg │ │ │ ├── nz.svg │ │ │ ├── om.svg │ │ │ ├── pa.svg │ │ │ ├── pe.svg │ │ │ ├── pf.svg │ │ │ ├── pg.svg │ │ │ ├── ph.svg │ │ │ ├── pk.svg │ │ │ ├── pl.svg │ │ │ ├── pm.svg │ │ │ ├── pn.svg │ │ │ ├── pr.svg │ │ │ ├── ps.svg │ │ │ ├── pt.svg │ │ │ ├── pw.svg │ │ │ ├── py.svg │ │ │ ├── qa.svg │ │ │ ├── re.svg │ │ │ ├── ro.svg │ │ │ ├── rs.svg │ │ │ ├── ru.svg │ │ │ ├── rw.svg │ │ │ ├── sa.svg │ │ │ ├── sb.svg │ │ │ ├── sc.svg │ │ │ ├── sd.svg │ │ │ ├── se.svg │ │ │ ├── sg.svg │ │ │ ├── sh.svg │ │ │ ├── si.svg │ │ │ ├── sj.svg │ │ │ ├── sk.svg │ │ │ ├── sl.svg │ │ │ ├── sm.svg │ │ │ ├── sn.svg │ │ │ ├── so.svg │ │ │ ├── sr.svg │ │ │ ├── ss.svg │ │ │ ├── st.svg │ │ │ ├── sv.svg │ │ │ ├── sx.svg │ │ │ ├── sy.svg │ │ │ ├── sz.svg │ │ │ ├── ta.svg │ │ │ ├── tc.svg │ │ │ ├── td.svg │ │ │ ├── tf.svg │ │ │ ├── tg.svg │ │ │ ├── th.svg │ │ │ ├── tj.svg │ │ │ ├── tk.svg │ │ │ ├── tl.svg │ │ │ ├── tm.svg │ │ │ ├── tn.svg │ │ │ ├── to.svg │ │ │ ├── tr.svg │ │ │ ├── tt.svg │ │ │ ├── tv.svg │ │ │ ├── tw.svg │ │ │ ├── tz.svg │ │ │ ├── ua.svg │ │ │ ├── ug.svg │ │ │ ├── um.svg │ │ │ ├── un.svg │ │ │ ├── uy.svg │ │ │ ├── uz.svg │ │ │ ├── va.svg │ │ │ ├── vc.svg │ │ │ ├── ve.svg │ │ │ ├── vg.svg │ │ │ ├── vi.svg │ │ │ ├── vn.svg │ │ │ ├── vu.svg │ │ │ ├── wf.svg │ │ │ ├── ws.svg │ │ │ ├── xk.svg │ │ │ ├── xx.svg │ │ │ ├── ye.svg │ │ │ ├── yt.svg │ │ │ ├── za.svg │ │ │ ├── zm.svg │ │ │ └── zw.svg │ │ │ └── 4x3 │ │ │ ├── ac.svg │ │ │ ├── ad.svg │ │ │ ├── ae.svg │ │ │ ├── af.svg │ │ │ ├── ag.svg │ │ │ ├── ai.svg │ │ │ ├── al.svg │ │ │ ├── am.svg │ │ │ ├── ao.svg │ │ │ ├── aq.svg │ │ │ ├── ar.svg │ │ │ ├── as.svg │ │ │ ├── at.svg │ │ │ ├── au.svg │ │ │ ├── aw.svg │ │ │ ├── ax.svg │ │ │ ├── az.svg │ │ │ ├── ba.svg │ │ │ ├── bb.svg │ │ │ ├── bd.svg │ │ │ ├── be.svg │ │ │ ├── bf.svg │ │ │ ├── bg.svg │ │ │ ├── bh.svg │ │ │ ├── bi.svg │ │ │ ├── bj.svg │ │ │ ├── bl.svg │ │ │ ├── bm.svg │ │ │ ├── bn.svg │ │ │ ├── bo.svg │ │ │ ├── bq.svg │ │ │ ├── br.svg │ │ │ ├── bs.svg │ │ │ ├── bt.svg │ │ │ ├── bv.svg │ │ │ ├── bw.svg │ │ │ ├── by.svg │ │ │ ├── bz.svg │ │ │ ├── ca.svg │ │ │ ├── cc.svg │ │ │ ├── cd.svg │ │ │ ├── cefta.svg │ │ │ ├── cf.svg │ │ │ ├── cg.svg │ │ │ ├── ch.svg │ │ │ ├── ci.svg │ │ │ ├── ck.svg │ │ │ ├── cl.svg │ │ │ ├── cm.svg │ │ │ ├── cn.svg │ │ │ ├── co.svg │ │ │ ├── cp.svg │ │ │ ├── cr.svg │ │ │ ├── cu.svg │ │ │ ├── cv.svg │ │ │ ├── cw.svg │ │ │ ├── cx.svg │ │ │ ├── cy.svg │ │ │ ├── cz.svg │ │ │ ├── de.svg │ │ │ ├── dg.svg │ │ │ ├── dj.svg │ │ │ ├── dk.svg │ │ │ ├── dm.svg │ │ │ ├── do.svg │ │ │ ├── dz.svg │ │ │ ├── ea.svg │ │ │ ├── ec.svg │ │ │ ├── ee.svg │ │ │ ├── eg.svg │ │ │ ├── eh.svg │ │ │ ├── en.svg │ │ │ ├── er.svg │ │ │ ├── es-ct.svg │ │ │ ├── es-ga.svg │ │ │ ├── es-pv.svg │ │ │ ├── es.svg │ │ │ ├── et.svg │ │ │ ├── eu.svg │ │ │ ├── fi.svg │ │ │ ├── fj.svg │ │ │ ├── fk.svg │ │ │ ├── fm.svg │ │ │ ├── fo.svg │ │ │ ├── fr.svg │ │ │ ├── ga.svg │ │ │ ├── gb-eng.svg │ │ │ ├── gb-nir.svg │ │ │ ├── gb-sct.svg │ │ │ ├── gb-wls.svg │ │ │ ├── gb.svg │ │ │ ├── gd.svg │ │ │ ├── ge.svg │ │ │ ├── gf.svg │ │ │ ├── gg.svg │ │ │ ├── gh.svg │ │ │ ├── gi.svg │ │ │ ├── gl.svg │ │ │ ├── gm.svg │ │ │ ├── gn.svg │ │ │ ├── gp.svg │ │ │ ├── gq.svg │ │ │ ├── gr.svg │ │ │ ├── gs.svg │ │ │ ├── gt.svg │ │ │ ├── gu.svg │ │ │ ├── gw.svg │ │ │ ├── gy.svg │ │ │ ├── hk.svg │ │ │ ├── hm.svg │ │ │ ├── hn.svg │ │ │ ├── hr.svg │ │ │ ├── ht.svg │ │ │ ├── hu.svg │ │ │ ├── ic.svg │ │ │ ├── id.svg │ │ │ ├── ie.svg │ │ │ ├── il.svg │ │ │ ├── im.svg │ │ │ ├── in.svg │ │ │ ├── io.svg │ │ │ ├── iq.svg │ │ │ ├── ir.svg │ │ │ ├── is.svg │ │ │ ├── it.svg │ │ │ ├── je.svg │ │ │ ├── jm.svg │ │ │ ├── jo.svg │ │ │ ├── jp.svg │ │ │ ├── ke.svg │ │ │ ├── kg.svg │ │ │ ├── kh.svg │ │ │ ├── ki.svg │ │ │ ├── km.svg │ │ │ ├── kn.svg │ │ │ ├── kp.svg │ │ │ ├── kr.svg │ │ │ ├── kw.svg │ │ │ ├── ky.svg │ │ │ ├── kz.svg │ │ │ ├── la.svg │ │ │ ├── lb.svg │ │ │ ├── lc.svg │ │ │ ├── li.svg │ │ │ ├── lk.svg │ │ │ ├── lr.svg │ │ │ ├── ls.svg │ │ │ ├── lt.svg │ │ │ ├── lu.svg │ │ │ ├── lv.svg │ │ │ ├── ly.svg │ │ │ ├── ma.svg │ │ │ ├── mc.svg │ │ │ ├── md.svg │ │ │ ├── me.svg │ │ │ ├── mf.svg │ │ │ ├── mg.svg │ │ │ ├── mh.svg │ │ │ ├── mk.svg │ │ │ ├── ml.svg │ │ │ ├── mm.svg │ │ │ ├── mn.svg │ │ │ ├── mo.svg │ │ │ ├── mp.svg │ │ │ ├── mq.svg │ │ │ ├── mr.svg │ │ │ ├── ms.svg │ │ │ ├── mt.svg │ │ │ ├── mu.svg │ │ │ ├── mv.svg │ │ │ ├── mw.svg │ │ │ ├── mx.svg │ │ │ ├── my.svg │ │ │ ├── mz.svg │ │ │ ├── na.svg │ │ │ ├── nc.svg │ │ │ ├── ne.svg │ │ │ ├── nf.svg │ │ │ ├── ng.svg │ │ │ ├── ni.svg │ │ │ ├── nl.svg │ │ │ ├── no.svg │ │ │ ├── np.svg │ │ │ ├── nr.svg │ │ │ ├── nu.svg │ │ │ ├── nz.svg │ │ │ ├── om.svg │ │ │ ├── pa.svg │ │ │ ├── pe.svg │ │ │ ├── pf.svg │ │ │ ├── pg.svg │ │ │ ├── ph.svg │ │ │ ├── pk.svg │ │ │ ├── pl.svg │ │ │ ├── pm.svg │ │ │ ├── pn.svg │ │ │ ├── pr.svg │ │ │ ├── ps.svg │ │ │ ├── pt.svg │ │ │ ├── pw.svg │ │ │ ├── py.svg │ │ │ ├── qa.svg │ │ │ ├── re.svg │ │ │ ├── ro.svg │ │ │ ├── rs.svg │ │ │ ├── ru.svg │ │ │ ├── rw.svg │ │ │ ├── sa.svg │ │ │ ├── sb.svg │ │ │ ├── sc.svg │ │ │ ├── sd.svg │ │ │ ├── se.svg │ │ │ ├── sg.svg │ │ │ ├── sh.svg │ │ │ ├── si.svg │ │ │ ├── sj.svg │ │ │ ├── sk.svg │ │ │ ├── sl.svg │ │ │ ├── sm.svg │ │ │ ├── sn.svg │ │ │ ├── so.svg │ │ │ ├── sr.svg │ │ │ ├── ss.svg │ │ │ ├── st.svg │ │ │ ├── sv.svg │ │ │ ├── sx.svg │ │ │ ├── sy.svg │ │ │ ├── sz.svg │ │ │ ├── ta.svg │ │ │ ├── tc.svg │ │ │ ├── td.svg │ │ │ ├── tf.svg │ │ │ ├── tg.svg │ │ │ ├── th.svg │ │ │ ├── tj.svg │ │ │ ├── tk.svg │ │ │ ├── tl.svg │ │ │ ├── tm.svg │ │ │ ├── tn.svg │ │ │ ├── to.svg │ │ │ ├── tr.svg │ │ │ ├── tt.svg │ │ │ ├── tv.svg │ │ │ ├── tw.svg │ │ │ ├── tz.svg │ │ │ ├── ua.svg │ │ │ ├── ug.svg │ │ │ ├── um.svg │ │ │ ├── un.svg │ │ │ ├── uy.svg │ │ │ ├── uz.svg │ │ │ ├── va.svg │ │ │ ├── vc.svg │ │ │ ├── ve.svg │ │ │ ├── vg.svg │ │ │ ├── vi.svg │ │ │ ├── vn.svg │ │ │ ├── vu.svg │ │ │ ├── wf.svg │ │ │ ├── ws.svg │ │ │ ├── xk.svg │ │ │ ├── xx.svg │ │ │ ├── ye.svg │ │ │ ├── yt.svg │ │ │ ├── za.svg │ │ │ ├── zm.svg │ │ │ └── zw.svg │ ├── favicon.ico │ ├── favicon.svg │ ├── fonts │ │ ├── inter-v12-latin-300.woff │ │ ├── inter-v12-latin-300.woff2 │ │ ├── inter-v12-latin-500.woff │ │ ├── inter-v12-latin-500.woff2 │ │ ├── inter-v12-latin-700.woff │ │ ├── inter-v12-latin-700.woff2 │ │ ├── inter-v12-latin-regular.woff │ │ └── inter-v12-latin-regular.woff2 │ ├── img │ │ ├── abstract12.jpg │ │ ├── abstract17.jpg │ │ ├── abstract18.jpg │ │ ├── abstract2.jpg │ │ ├── abstract3.jpg │ │ ├── abstract4.jpg │ │ ├── abstract6.jpg │ │ ├── abstract9.jpg │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── person10.jpg │ │ ├── person103.jpg │ │ ├── person11.jpg │ │ ├── person13.jpg │ │ ├── person14.jpg │ │ ├── person16.jpg │ │ ├── person9.jpg │ │ └── webp │ │ │ ├── abstract12.webp │ │ │ ├── abstract17.webp │ │ │ ├── abstract18.webp │ │ │ ├── abstract2.webp │ │ │ ├── abstract3.webp │ │ │ ├── abstract4.webp │ │ │ ├── abstract6.webp │ │ │ ├── abstract9.webp │ │ │ ├── favicon-16x16.webp │ │ │ ├── favicon-32x32.webp │ │ │ ├── person10.webp │ │ │ ├── person103.webp │ │ │ ├── person11.webp │ │ │ ├── person13.webp │ │ │ ├── person14.webp │ │ │ ├── person16.webp │ │ │ └── person9.webp │ ├── js │ │ ├── aos.cjs.js │ │ ├── aos.esm.js │ │ ├── aos.js │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.bundle.js.map │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.esm.js │ │ ├── bootstrap.esm.js.map │ │ ├── bootstrap.esm.min.js │ │ ├── bootstrap.esm.min.js.map │ │ ├── bootstrap.js │ │ ├── bootstrap.js.map │ │ ├── bootstrap.min.js │ │ └── bootstrap.min.js.map │ └── locales │ │ ├── de │ │ └── translation.json │ │ └── en │ │ └── translation.json │ ├── src │ ├── common │ │ ├── components │ │ │ ├── LanguageChooser.module.scss │ │ │ ├── LanguageChooser.tsx │ │ │ ├── LaunchpadBrand.tsx │ │ │ ├── LoginButton.tsx │ │ │ ├── PageHeader.tsx │ │ │ ├── SuspenseBoundary.tsx │ │ │ ├── UserDropdown.module.scss │ │ │ ├── UserDropdown.tsx │ │ │ └── auth │ │ │ │ └── SocialSignIn.tsx │ │ ├── layouts │ │ │ ├── PresentationLayout.astro │ │ │ ├── bootstrap.scss │ │ │ └── theme.css │ │ ├── pages │ │ │ ├── 404.astro │ │ │ ├── admin │ │ │ │ └── index.astro │ │ │ ├── auth │ │ │ │ ├── forbidden.astro │ │ │ │ └── signin.astro │ │ │ └── index.astro │ │ └── sections │ │ │ ├── Footer.astro │ │ │ ├── FourCards.astro │ │ │ ├── Hero.astro │ │ │ ├── Pricing.astro │ │ │ ├── Statistics.astro │ │ │ ├── Testimonials.astro │ │ │ ├── ThreeImagesBetweenSections.astro │ │ │ ├── ThreeTopics.astro │ │ │ └── TwoImagesOneTopic.astro │ ├── env.d.ts │ └── pages │ │ ├── 404.astro │ │ ├── ARCH.md │ │ ├── admin │ │ └── index.astro │ │ ├── api-client │ │ ├── ARCH.md │ │ ├── auth │ │ │ └── roles-client.ts │ │ └── getSession.ts │ │ ├── api │ │ ├── 404.ts │ │ └── auth │ │ │ ├── [...astroauth].ts │ │ │ └── roles.ts │ │ ├── auth │ │ └── signin.astro │ │ ├── de │ │ ├── 404.astro │ │ ├── admin │ │ │ └── index.astro │ │ ├── auth │ │ │ └── signin.astro │ │ └── index.astro │ │ └── index.astro │ ├── test │ └── basic.test.ts │ ├── tsconfig.json │ ├── vercel.json │ └── vitest.config.ts ├── package.json ├── packages ├── auth │ ├── .eslintrc.js │ ├── index.ts │ ├── package.json │ └── tsconfig.json ├── components │ ├── Cloudinary.astro │ ├── Cloudinary.ts │ ├── VercelWebVitals.astro │ ├── index.ts │ ├── package.json │ └── tsconfig.json ├── eslint-config-custom │ ├── .eslintignore │ ├── .eslintrc.js │ ├── README.md │ ├── index.js │ ├── package.json │ └── tsconfig.json ├── format │ ├── README.md │ ├── bin │ │ └── format │ ├── index.js │ └── package.json ├── i18n │ ├── .eslintrc.js │ ├── index.tsx │ ├── package.json │ ├── server │ │ └── index.ts │ └── tsconfig.json ├── icons │ ├── .eslintrc.js │ ├── index.ts │ ├── package.json │ ├── src │ │ ├── ArrowRight.tsx │ │ ├── AstroIcon.tsx │ │ ├── BookOpenIcon.tsx │ │ ├── DoorIcon.tsx │ │ ├── GithubIcon.tsx │ │ ├── LinkOpenIcon.tsx │ │ ├── ListIcon.tsx │ │ └── PlusIcon.tsx │ └── tsconfig.json ├── reactive │ ├── .eslintrc.js │ ├── index.ts │ ├── package.json │ └── tsconfig.json ├── theme │ ├── index.ts │ ├── package.json │ └── tsconfig.json └── tsconfig │ ├── README.md │ ├── base.json │ └── package.json ├── sandbox.config.json ├── turbo.json ├── vercel-root-dir.png └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | 258 Bytes 2 | 3 | # https://EditorConfig.org 4 | 5 | # top-most EditorConfig file 6 | root = true 7 | 8 | [*] 9 | charset = utf-8 10 | end_of_line = lf 11 | indent_size = 2 12 | indent_style = space 13 | 14 | insert_final_newline = true 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | # intentionally commited and not git-ignored; serve as example values 2 | # if you're using this project as a template to start with, add .env to .gitignore 3 | # and don't commit any credentails! 4 | 5 | # Github OAuth app: https://github.com/settings/apps/astrocms-local for login 6 | GITHUB_CLIENT_ID= 7 | GITHUB_CLIENT_SECRET= 8 | AUTH_SECRET= 9 | AUTH_TRUST_HOST= 10 | 11 | ADMIN_USER_EMAILS='["foo@bar.com"]' 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | .output/ 4 | 5 | # IDEs 6 | .vscode/ 7 | 8 | # dependencies 9 | node_modules/ 10 | 11 | # logs 12 | npm-debug.log* 13 | yarn-debug.log* 14 | yarn-error.log* 15 | pnpm-debug.log* 16 | 17 | # caches 18 | .turbo 19 | .astro 20 | .vercel 21 | 22 | # macOS-specific files 23 | .DS_Store 24 | 25 | # test 26 | coverage/ 27 | 28 | # env 29 | .env 30 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | .github 4 | .changeset 5 | *.md 6 | yarn.yaml 7 | .turbo 8 | .vercel 9 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "semi": false, 4 | "singleQuote": true, 5 | "tabWidth": 2, 6 | "trailingComma": "es5", 7 | "useTabs": false, 8 | "overrides": [ 9 | { 10 | "files": [ 11 | "**/*.astro" 12 | ], 13 | "options": { 14 | "parser": "astro" 15 | } 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /apps/server/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 Chrome major versions 2 | last 2 Firefox major versions 3 | last 2 Edge major versions 4 | last 2 Safari major versions 5 | last 2 iOS major versions 6 | last 2 ChromeAndroid versions 7 | last 2 FirefoxAndroid versions 8 | last 2 Samsung versions 9 | Firefox ESR -------------------------------------------------------------------------------- /apps/server/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['custom'], 4 | } 5 | -------------------------------------------------------------------------------- /apps/server/README.md: -------------------------------------------------------------------------------- 1 | # `server` app 2 | 3 | Implement your Astro application logic here. 4 | -------------------------------------------------------------------------------- /apps/server/astro-i18next.config.ts: -------------------------------------------------------------------------------- 1 | import type { AstroI18nextConfig } from 'astro-i18next' 2 | 3 | const config: AstroI18nextConfig = { 4 | defaultLocale: 'en', 5 | locales: ['en', 'de'], 6 | load: ['server', 'client'], // load i18next server and client side 7 | /* only activate if necessary 8 | i18nextServer: { 9 | debug: true, 10 | }, 11 | i18nextClient: { 12 | debug: true, 13 | }, 14 | */ 15 | i18nextServerPlugins: { 16 | '{initReactI18next}': 'react-i18next', 17 | }, 18 | i18nextClientPlugins: { 19 | '{initReactI18next}': 'react-i18next', 20 | }, 21 | } 22 | 23 | export default config 24 | -------------------------------------------------------------------------------- /apps/server/playwright.config.ts: -------------------------------------------------------------------------------- 1 | import type { PlaywrightTestConfig } from '@playwright/test' 2 | 3 | // see: https://playwright.dev/docs/intro 4 | const config: PlaywrightTestConfig = { 5 | testDir: './playwright', 6 | webServer: { 7 | command: 'yarn dev', 8 | url: 'http://localhost:3000/', 9 | timeout: 120 * 1000, 10 | reuseExistingServer: !process.env.CI, 11 | }, 12 | use: { 13 | baseURL: 'http://localhost:3000/', 14 | }, 15 | } 16 | export default config 17 | -------------------------------------------------------------------------------- /apps/server/playwright/index.spec.ts: -------------------------------------------------------------------------------- 1 | import { test, expect } from '@playwright/test' 2 | 3 | test('title is correct', async ({ page }) => { 4 | await page.goto('http://localhost:3000/alsdjlajsd1134') 5 | 6 | await expect(page).toHaveTitle('404 - Not found') 7 | }) 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ae.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/am.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/at.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ax.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/az.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/be.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/bw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ca.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/co.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/cz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/de.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/dj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/dk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/dz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/eh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/es-ct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/es-pv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/fm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/fo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gb-eng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gb-sct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/gy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/hu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/id.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/il.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/is.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/it.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/jm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/jo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/jp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/kn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/kp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/kr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/kw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/la.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/lc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/lr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/lt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/lu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/lv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ly.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/mv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/nl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/nr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/nu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/pa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/pk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/pl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/pm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/pr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/pw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/qa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/re.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/rw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/sc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/sd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/se.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/sj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/sl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/sn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/so.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/sr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/sy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/td.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/tg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/th.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/tk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/tl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/tn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/to.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/tr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/tt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/tz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ua.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/vc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/vn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/wf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ws.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/xx.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/ye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/1x1/yt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ae.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/am.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/at.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ax.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/az.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/be.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/bw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ca.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/co.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/cz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/de.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/dj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/dk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/dz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/eh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/es-ct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/es-pv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/fm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/fo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gb-eng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gb-sct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/gy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/hu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/id.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/is.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/it.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/jm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/jo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/jp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/kn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/kp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/kw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/la.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/lc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/lr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/lt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/lu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/lv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ly.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/mv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/nl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/nr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/nu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/pa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/pk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/pl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/pm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/pr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/pw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/qa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/re.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/rw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/sc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/sd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/se.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/sg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/sj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/sl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/sn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/so.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/sr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/sy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/td.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/tg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/th.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/tk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/tl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/tn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/to.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/tr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/tt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/tz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ua.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/vc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/vn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/wf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ws.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/xx.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/ye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/yt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /apps/server/public/common/assets/flags/4x3/za.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /apps/server/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/favicon.ico -------------------------------------------------------------------------------- /apps/server/public/fonts/inter-v12-latin-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/fonts/inter-v12-latin-300.woff -------------------------------------------------------------------------------- /apps/server/public/fonts/inter-v12-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/fonts/inter-v12-latin-300.woff2 -------------------------------------------------------------------------------- /apps/server/public/fonts/inter-v12-latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/fonts/inter-v12-latin-500.woff -------------------------------------------------------------------------------- /apps/server/public/fonts/inter-v12-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/fonts/inter-v12-latin-500.woff2 -------------------------------------------------------------------------------- /apps/server/public/fonts/inter-v12-latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/fonts/inter-v12-latin-700.woff -------------------------------------------------------------------------------- /apps/server/public/fonts/inter-v12-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/fonts/inter-v12-latin-700.woff2 -------------------------------------------------------------------------------- /apps/server/public/fonts/inter-v12-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/fonts/inter-v12-latin-regular.woff -------------------------------------------------------------------------------- /apps/server/public/fonts/inter-v12-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/fonts/inter-v12-latin-regular.woff2 -------------------------------------------------------------------------------- /apps/server/public/img/abstract12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/abstract12.jpg -------------------------------------------------------------------------------- /apps/server/public/img/abstract17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/abstract17.jpg -------------------------------------------------------------------------------- /apps/server/public/img/abstract18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/abstract18.jpg -------------------------------------------------------------------------------- /apps/server/public/img/abstract2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/abstract2.jpg -------------------------------------------------------------------------------- /apps/server/public/img/abstract3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/abstract3.jpg -------------------------------------------------------------------------------- /apps/server/public/img/abstract4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/abstract4.jpg -------------------------------------------------------------------------------- /apps/server/public/img/abstract6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/abstract6.jpg -------------------------------------------------------------------------------- /apps/server/public/img/abstract9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/abstract9.jpg -------------------------------------------------------------------------------- /apps/server/public/img/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/favicon-16x16.png -------------------------------------------------------------------------------- /apps/server/public/img/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/favicon-32x32.png -------------------------------------------------------------------------------- /apps/server/public/img/person10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/person10.jpg -------------------------------------------------------------------------------- /apps/server/public/img/person103.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/person103.jpg -------------------------------------------------------------------------------- /apps/server/public/img/person11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/person11.jpg -------------------------------------------------------------------------------- /apps/server/public/img/person13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/person13.jpg -------------------------------------------------------------------------------- /apps/server/public/img/person14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/person14.jpg -------------------------------------------------------------------------------- /apps/server/public/img/person16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/person16.jpg -------------------------------------------------------------------------------- /apps/server/public/img/person9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/person9.jpg -------------------------------------------------------------------------------- /apps/server/public/img/webp/abstract12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/abstract12.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/abstract17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/abstract17.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/abstract18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/abstract18.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/abstract2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/abstract2.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/abstract3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/abstract3.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/abstract4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/abstract4.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/abstract6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/abstract6.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/abstract9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/abstract9.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/favicon-16x16.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/favicon-16x16.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/favicon-32x32.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/favicon-32x32.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/person10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/person10.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/person103.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/person103.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/person11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/person11.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/person13.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/person13.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/person14.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/person14.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/person16.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/person16.webp -------------------------------------------------------------------------------- /apps/server/public/img/webp/person9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/apps/server/public/img/webp/person9.webp -------------------------------------------------------------------------------- /apps/server/src/common/components/LanguageChooser.module.scss: -------------------------------------------------------------------------------- 1 | .languageIcon { 2 | border: 2px solid #fff; 3 | border-radius: 100%; 4 | width: 32px; 5 | height: 32px; 6 | } 7 | 8 | .dropdownButton { 9 | border: 0px; 10 | cursor: pointer; 11 | padding: 0px; 12 | margin: 0px; 13 | margin-top: 10px; 14 | background: none; 15 | &::after { 16 | display: none !important; 17 | } 18 | } 19 | 20 | .dropdownMenu { 21 | background: transparent; 22 | margin-top:-10px !important 23 | } 24 | 25 | .dropdownItem { 26 | background: transparent; 27 | display: block; 28 | } 29 | -------------------------------------------------------------------------------- /apps/server/src/common/components/LaunchpadBrand.tsx: -------------------------------------------------------------------------------- 1 | import { Link } from '@packages/i18n' 2 | import { AstroIcon } from '@packages/icons' 3 | 4 | export interface LaunchpadBrandProps { 5 | isAdmin: boolean 6 | } 7 | 8 | export const LaunchpadBrand = ({ isAdmin }: LaunchpadBrandProps) => ( 9 | 14 | 15 | 19 | ***  LaunchPad 20 | 21 | 22 | ) 23 | -------------------------------------------------------------------------------- /apps/server/src/common/components/LoginButton.tsx: -------------------------------------------------------------------------------- 1 | import { t, Link } from '@packages/i18n' 2 | import { DoorIcon } from '@packages/icons/src/DoorIcon' 3 | 4 | export const LoginButton = () => ( 5 | 6 | {t('common.auth.signin')} 7 | 8 | ) 9 | -------------------------------------------------------------------------------- /apps/server/src/common/components/SuspenseBoundary.tsx: -------------------------------------------------------------------------------- 1 | import { ComponentChild } from 'preact' 2 | 3 | export interface SuspenseBoundaryProps { 4 | children: ComponentChild 5 | } 6 | 7 | export const SuspenseBoundary = (props: SuspenseBoundaryProps) => { 8 | return <>{props.children} 9 | } 10 | -------------------------------------------------------------------------------- /apps/server/src/common/components/UserDropdown.module.scss: -------------------------------------------------------------------------------- 1 | .userAvatar { 2 | border: 2px solid #fff; 3 | border-radius: 100%; 4 | width: 42px; 5 | height: 42px; 6 | } 7 | 8 | .dropdownButton { 9 | border: 0px; 10 | cursor: pointer; 11 | padding: 0px; 12 | margin: 0px; 13 | background: none; 14 | &::after { 15 | display: none !important; 16 | } 17 | } 18 | 19 | .dropdownMenu { 20 | background: none; 21 | } 22 | 23 | .dropdownItem { 24 | background: transparent; 25 | padding-top: 10px; 26 | display: block; 27 | color: #fff; 28 | &:hover { 29 | color: #fff; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/server/src/common/pages/404.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { SEO } from 'astro-seo' 3 | import PresentationLayout from '../layouts/PresentationLayout.astro' 4 | import { t } from '@packages/i18n' 5 | import Hero from '../sections/Hero.astro' 6 | --- 7 | 8 | 9 | 14 | 15 | 16 |

„ Houston? Houston...?! ”

17 |

404

18 | There is no route at the end of the Universe.
Turn around, brave Astronaut. 19 |
20 |
21 | -------------------------------------------------------------------------------- /apps/server/src/common/pages/admin/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { getAuthState } from '@packages/auth' 3 | import { t } from '@packages/i18n' 4 | import PresentationLayout from '../../layouts/PresentationLayout.astro' 5 | import ForbiddenPage from '../auth/forbidden.astro' 6 | import Hero from '../../sections/Hero.astro' 7 | 8 | // SSR page that fetches the current auth state 9 | 10 | const { isLoggedIn, user } = await getAuthState(Astro.request) 11 | --- 12 | 13 | { 14 | isLoggedIn && ( 15 | 16 | 17 |

{t('common.admin.sub_header')}

18 |

{t('common.admin.header')}

19 | {t('common.admin.msg')}, {(user.name || '').split(' ')[0]}! 20 |
21 |
22 | ) 23 | } 24 | 25 | {!isLoggedIn && } 26 | -------------------------------------------------------------------------------- /apps/server/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /apps/server/src/pages/404.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { changeLanguage } from "i18next"; 3 | import NotFoundPage from "../common/pages/404.astro"; 4 | 5 | changeLanguage("en"); 6 | 7 | export const prerender = true; 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/src/pages/admin/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { changeLanguage } from "i18next"; 3 | import AdminHomePage from "../../common/pages/admin/index.astro"; 4 | 5 | changeLanguage("en"); 6 | 7 | export const prerender = true; 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/src/pages/api-client/ARCH.md: -------------------------------------------------------------------------------- 1 | # api-client 2 | 3 | This folder is auto-generated. 4 | -------------------------------------------------------------------------------- /apps/server/src/pages/api-client/getSession.ts: -------------------------------------------------------------------------------- 1 | /** session data of a logged-in user */ 2 | export interface Session { 3 | user: { 4 | name: string // 'Aron Homberg' 5 | email: string // 'info@aron-homberg.de' 6 | image: string // 'https://avatars.githubusercontent.com/u/454817?v=4' 7 | } 8 | expires: string // '2023-03-03T00:35:44.043Z' 9 | } 10 | 11 | /** returns the current auth session if available */ 12 | export const getSession = async () => { 13 | const maybeSession: Session = await (await fetch('/api/auth/session')).json() 14 | 15 | if (!maybeSession.user && !maybeSession.expires) { 16 | return null 17 | } 18 | return maybeSession 19 | } 20 | -------------------------------------------------------------------------------- /apps/server/src/pages/api/404.ts: -------------------------------------------------------------------------------- 1 | import { APIRoute } from 'astro' 2 | 3 | export const get: APIRoute = async ({ redirect }) => { 4 | return redirect('/404.html', 301) 5 | } 6 | -------------------------------------------------------------------------------- /apps/server/src/pages/api/auth/[...astroauth].ts: -------------------------------------------------------------------------------- 1 | import { getEndpoints } from '@packages/auth' 2 | 3 | export const { get, post } = getEndpoints() 4 | -------------------------------------------------------------------------------- /apps/server/src/pages/api/auth/roles.ts: -------------------------------------------------------------------------------- 1 | import { authOpts, getRoles, Role } from '@packages/auth' 2 | import { APIRoute } from 'astro' 3 | import { getSession } from 'auth-astro' 4 | 5 | export interface ApiResponse { 6 | roles: Array 7 | } 8 | 9 | /** returns the roles list for a logged-in user */ 10 | export const get: APIRoute = async ({ request }) => { 11 | const session = await getSession(request, authOpts) 12 | return { 13 | status: session ? 200 : 403, 14 | body: session ? JSON.stringify({ 15 | roles: await getRoles(session) 16 | }) : JSON.stringify({ 17 | roles: [] 18 | }), 19 | headers: { 20 | 'Content-Type': 'application/json', 21 | }, 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /apps/server/src/pages/auth/signin.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { changeLanguage } from "i18next"; 3 | import SignInPage from "../../common/pages/auth/signin.astro"; 4 | 5 | changeLanguage("en"); 6 | 7 | export const prerender = true; 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/src/pages/de/404.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { changeLanguage } from "i18next"; 3 | import NotFoundPage from "../../common/pages/404.astro"; 4 | 5 | changeLanguage("de"); 6 | 7 | export const prerender = true; 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/src/pages/de/admin/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { changeLanguage } from "i18next"; 3 | import AdminHomePage from "../../../common/pages/admin/index.astro"; 4 | 5 | changeLanguage("de"); 6 | 7 | export const prerender = true; 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/src/pages/de/auth/signin.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { changeLanguage } from "i18next"; 3 | import SignInPage from "../../../common/pages/auth/signin.astro"; 4 | 5 | changeLanguage("de"); 6 | 7 | export const prerender = true; 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/src/pages/de/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { changeLanguage } from "i18next"; 3 | import IndexPage from "../../common/pages/index.astro"; 4 | 5 | changeLanguage("de"); 6 | 7 | export const prerender = true; 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/src/pages/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { changeLanguage } from "i18next"; 3 | import IndexPage from "../common/pages/index.astro"; 4 | 5 | changeLanguage("en"); 6 | 7 | export const prerender = true; 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/server/test/basic.test.ts: -------------------------------------------------------------------------------- 1 | import { assert, expect, test } from 'vitest' 2 | 3 | // Edit an assertion and save to see HMR in action 4 | 5 | test('Math.sqrt()', () => { 6 | expect(Math.sqrt(4)).toBe(2) 7 | expect(Math.sqrt(144)).toBe(12) 8 | expect(Math.sqrt(2)).toBe(Math.SQRT2) 9 | }) 10 | 11 | test('JSON', () => { 12 | const input = { 13 | foo: 'hello', 14 | bar: 'world', 15 | } 16 | 17 | const output = JSON.stringify(input) 18 | 19 | expect(output).eq('{"foo":"hello","bar":"world"}') 20 | assert.deepEqual(JSON.parse(output), input, 'matches original') 21 | }) 22 | -------------------------------------------------------------------------------- /apps/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tsconfig/base.json" 3 | } 4 | -------------------------------------------------------------------------------- /apps/server/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "framework": "astro", 3 | "devCommand": "cd ../.. && yarn dev", 4 | "buildCommand": "cd ../.. && yarn build", 5 | "installCommand": "yarn --cwd=../.. install", 6 | "ignoreCommand": "exit 1", 7 | "cleanUrls": true, 8 | "regions": ["fra1"], 9 | "trailingSlash": false, 10 | "rewrites": [ 11 | { 12 | "source": "/api/(.*)", 13 | "destination": "/api/fastify" 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /apps/server/vitest.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { getViteConfig } from 'astro/config' 3 | 4 | // see: https://vitest.dev/guide/features.html 5 | export default getViteConfig({ 6 | test: { 7 | dir: './test', 8 | coverage: { 9 | provider: 'c8', 10 | reportsDirectory: './coverage', 11 | reporter: ['text', 'json', 'html'], 12 | }, 13 | /* for example, use global to avoid globals imports (describe, test, expect): */ 14 | // globals: true, 15 | }, 16 | }) 17 | -------------------------------------------------------------------------------- /packages/auth/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['custom'], 4 | } 5 | -------------------------------------------------------------------------------- /packages/auth/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth", 3 | "version": "0.0.1", 4 | "private": true, 5 | "type": "module", 6 | "description": "Authentication abstraction for the CMS", 7 | "keywords": [ 8 | "authentication" 9 | ], 10 | "main": "index.ts", 11 | "types": "index.ts", 12 | "license": "MIT", 13 | "scripts": { 14 | "lint": "eslint", 15 | "format": "format" 16 | }, 17 | "author": { 18 | "name": "Aron Homberg", 19 | "url": "https://github.com/kyr0" 20 | }, 21 | "devDependencies": { 22 | "eslint-config-custom": "*", 23 | "tsconfig": "*", 24 | "format": "*" 25 | }, 26 | "dependencies": { 27 | "simply-persist": "^1.0.2", 28 | "auth-astro": "^1.0.5", 29 | "runtime-info": "^1.0.1" 30 | }, 31 | "exports": { 32 | ".": "./index.ts" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /packages/auth/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tsconfig/base.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/components/Cloudinary.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { CloudinaryProps, cloudinary } from './Cloudinary' 3 | const { uri, alt } = cloudinary(Astro.props as CloudinaryProps) 4 | --- 5 | 6 | {alt} 7 | -------------------------------------------------------------------------------- /packages/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Cloudinary' 2 | -------------------------------------------------------------------------------- /packages/components/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "components", 3 | "version": "0.0.1", 4 | "private": true, 5 | "type": "module", 6 | "description": "Utility components library package.", 7 | "keywords": [ 8 | "utilities" 9 | ], 10 | "main": "index.ts", 11 | "types": "index.ts", 12 | "license": "MIT", 13 | "scripts": { 14 | "lint": "eslint", 15 | "format": "format" 16 | }, 17 | "author": { 18 | "name": "Aron Homberg", 19 | "url": "https://github.com/kyr0" 20 | }, 21 | "devDependencies": { 22 | "eslint-config-custom": "*", 23 | "tsconfig": "*", 24 | "format": "*" 25 | }, 26 | "exports": { 27 | ".": "./index.ts" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/components/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tsconfig/base.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/eslint-config-custom/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | .github 4 | .changeset 5 | .vercel 6 | .turbo 7 | .vscode 8 | -------------------------------------------------------------------------------- /packages/eslint-config-custom/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./index') 2 | -------------------------------------------------------------------------------- /packages/eslint-config-custom/README.md: -------------------------------------------------------------------------------- 1 | # eslint-config-custom 2 | 3 | This set-up follows the guidance of the [official turbo repo docs](https://turbo.build/repo/docs/handbook/linting/eslint) as well as the [Astro eslint plugin](https://github.com/ota-meshi/eslint-plugin-astro) used in the [Astro docs](https://github.com/withastro/docs/blob/main/.eslintrc.js). 4 | -------------------------------------------------------------------------------- /packages/eslint-config-custom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint-config-custom", 3 | "main": "index.js", 4 | "version": "0.0.1", 5 | "license": "MIT", 6 | "scripts": { 7 | "lint": "eslint", 8 | "format": "format" 9 | }, 10 | "dependencies": { 11 | "eslint": "^8.26.0", 12 | "@typescript-eslint/eslint-plugin": "^5.42.0", 13 | "@typescript-eslint/parser": "^5.42.0", 14 | "eslint-plugin-astro": "^0.21.0", 15 | "eslint-config-prettier": "^8.5.0", 16 | "eslint-config-turbo": "^0.0.4", 17 | "typescript": "^4.8.4", 18 | "tsconfig": "*", 19 | "format": "*" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/eslint-config-custom/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tsconfig/base.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/format/README.md: -------------------------------------------------------------------------------- 1 | # format 2 | 3 | This package formats code using prettier (unified for all packages and apps). 4 | -------------------------------------------------------------------------------- /packages/format/bin/format: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict' 3 | require('../index')() 4 | -------------------------------------------------------------------------------- /packages/format/index.js: -------------------------------------------------------------------------------- 1 | const execSync = require('child_process').execSync 2 | const resolve = require('path').resolve 3 | const projectRootDir = resolve(`${__dirname}/../..`) 4 | module.exports = () => { 5 | execSync( 6 | `${projectRootDir}/node_modules/.bin/prettier --config ${projectRootDir}/.prettierrc -w --ignore-path ${projectRootDir}/.prettierignore . --cache --plugin-search-dir=${projectRootDir}`, 7 | { 8 | stdio: 'inherit', 9 | } 10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /packages/format/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "format", 3 | "main": "index.js", 4 | "bin": "bin/format", 5 | "license": "MIT", 6 | "version": "0.0.6" 7 | } -------------------------------------------------------------------------------- /packages/i18n/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['custom'], 4 | } 5 | -------------------------------------------------------------------------------- /packages/i18n/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "i18n", 3 | "version": "0.0.1", 4 | "private": true, 5 | "type": "module", 6 | "description": "Internationalization abstraction for the CMS", 7 | "keywords": [ 8 | "internationalization" 9 | ], 10 | "main": "index.tsx", 11 | "types": "index.tsx", 12 | "license": "MIT", 13 | "scripts": { 14 | "lint": "eslint", 15 | "format": "format" 16 | }, 17 | "author": { 18 | "name": "Aron Homberg", 19 | "url": "https://github.com/kyr0" 20 | }, 21 | "devDependencies": { 22 | "eslint-config-custom": "*", 23 | "tsconfig": "*", 24 | "format": "*" 25 | }, 26 | "dependencies": { 27 | "i18next": "^22.4.9", 28 | "simply-persist": "^1.0.2", 29 | "get-user-locale": "^2.1.2", 30 | "runtime-info": "^1.0.1" 31 | }, 32 | "exports": { 33 | ".": "./index.tsx" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /packages/i18n/server/index.ts: -------------------------------------------------------------------------------- 1 | export * from 'astro-i18next/components' 2 | -------------------------------------------------------------------------------- /packages/i18n/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tsconfig/base.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/icons/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['custom'], 4 | } 5 | -------------------------------------------------------------------------------- /packages/icons/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/BookOpenIcon' 2 | export * from './src/DoorIcon' 3 | export * from './src/GithubIcon' 4 | export * from './src/LinkOpenIcon' 5 | export * from './src/ListIcon' 6 | export * from './src/PlusIcon' 7 | export * from './src/AstroIcon' 8 | export * from './src/ArrowRight' 9 | -------------------------------------------------------------------------------- /packages/icons/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "icons", 3 | "version": "0.0.1", 4 | "private": true, 5 | "type": "module", 6 | "description": "Icon collection", 7 | "keywords": [ 8 | "icons" 9 | ], 10 | "main": "index.ts", 11 | "types": "index.ts", 12 | "license": "MIT", 13 | "scripts": { 14 | "lint": "eslint", 15 | "format": "format" 16 | }, 17 | "author": { 18 | "name": "Aron Homberg", 19 | "url": "https://github.com/kyr0" 20 | }, 21 | "devDependencies": { 22 | "eslint-config-custom": "*", 23 | "tsconfig": "*", 24 | "format": "*" 25 | }, 26 | "exports": { 27 | ".": "./index.ts" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/icons/src/ArrowRight.tsx: -------------------------------------------------------------------------------- 1 | export const ArrowRight = () => ( 2 | 10 | 14 | 15 | ) 16 | -------------------------------------------------------------------------------- /packages/icons/src/BookOpenIcon.tsx: -------------------------------------------------------------------------------- 1 | export const BookOpenIcon = ({ color }: { color?: string }) => 2 | 3 | -------------------------------------------------------------------------------- /packages/icons/src/DoorIcon.tsx: -------------------------------------------------------------------------------- 1 | // https://feathericons.com/?query=logout 2 | export const DoorIcon = () => 3 | -------------------------------------------------------------------------------- /packages/icons/src/GithubIcon.tsx: -------------------------------------------------------------------------------- 1 | export const GithubIcon = () => 2 | 3 | -------------------------------------------------------------------------------- /packages/icons/src/LinkOpenIcon.tsx: -------------------------------------------------------------------------------- 1 | export const LinkOpenIcon = (props) => 2 | 3 | -------------------------------------------------------------------------------- /packages/icons/src/ListIcon.tsx: -------------------------------------------------------------------------------- 1 | export const ListIcon = () => 2 | -------------------------------------------------------------------------------- /packages/icons/src/PlusIcon.tsx: -------------------------------------------------------------------------------- 1 | export const PlusIcon = () => { 2 | return ( 3 | 13 | 14 | ' 15 | 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /packages/icons/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tsconfig/base.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/reactive/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['custom'], 4 | } 5 | -------------------------------------------------------------------------------- /packages/reactive/index.ts: -------------------------------------------------------------------------------- 1 | import { signal } from '@preact/signals' 2 | import { useEffect as useEffectOriginal } from 'preact/hooks'; 3 | 4 | /** creates a global signal of arbitrary type, keys shall not collide */ 5 | export const globalSignal = (key: string, initialValue?: T): ReturnType> => { 6 | const keyPrefix = `@@globalSignal$_${key}` 7 | if (globalThis[keyPrefix]) return globalThis[keyPrefix] 8 | return (globalThis[keyPrefix] = signal(initialValue)) 9 | } 10 | 11 | /** intuitive useEffect that can handle async callbacks and defaults to [] in case of no dependencies */ 12 | export const useEffect = (fn: () => void | Promise, deps?: Array) => { 13 | useEffectOriginal(() => { 14 | fn() 15 | }, deps || []) 16 | } 17 | -------------------------------------------------------------------------------- /packages/reactive/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reactive", 3 | "version": "0.0.1", 4 | "private": true, 5 | "type": "module", 6 | "description": "Powertools for preact reactivity", 7 | "keywords": [ 8 | "reactivity" 9 | ], 10 | "main": "index.ts", 11 | "types": "index.ts", 12 | "license": "MIT", 13 | "scripts": { 14 | "lint": "eslint", 15 | "format": "format" 16 | }, 17 | "author": { 18 | "name": "Aron Homberg", 19 | "url": "https://github.com/kyr0" 20 | }, 21 | "devDependencies": { 22 | "eslint-config-custom": "*", 23 | "tsconfig": "*", 24 | "format": "*" 25 | }, 26 | "dependencies": { 27 | "@preact/signals-core": "^1.2.3", 28 | "@preact/signals": "^1.1.3", 29 | "runtime-info": "^1.0.0", 30 | "usignal": "^0.8.10" 31 | }, 32 | "exports": { 33 | ".": "./index.ts" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /packages/reactive/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tsconfig/base.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/theme/index.ts: -------------------------------------------------------------------------------- 1 | import { twMerge } from 'tailwind-merge' 2 | 3 | const oneToMany = (classes: Array | string>) => 4 | Array.isArray(classes) ? classes : [classes] 5 | 6 | const merge = (baseClassString: string, classes?: Array | string>) => 7 | twMerge([baseClassString, ...(classes ? oneToMany(classes) : [])]) 8 | 9 | const makeStyleFn = 10 | (baseClassString: string) => 11 | (...classes: Array | string>) => 12 | merge(baseClassString, classes) 13 | 14 | // example for merging tailwind classes into one 15 | export const btn = { 16 | /** default styles button with small-rounded corners */ 17 | default: makeStyleFn( 18 | 'text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 mr-2 mb-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800' 19 | ), 20 | } 21 | -------------------------------------------------------------------------------- /packages/theme/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "theme", 3 | "version": "0.0.1", 4 | "private": true, 5 | "type": "module", 6 | "description": "Classy CSS component theme for Flowbite", 7 | "keywords": [ 8 | "classy", 9 | "css", 10 | "flowbite" 11 | ], 12 | "main": "index.ts", 13 | "types": "index.ts", 14 | "license": "MIT", 15 | "scripts": { 16 | "lint": "eslint", 17 | "format": "format" 18 | }, 19 | "author": { 20 | "name": "Aron Homberg", 21 | "url": "https://github.com/kyr0" 22 | }, 23 | "devDependencies": { 24 | "eslint-config-custom": "*", 25 | "tsconfig": "*", 26 | "format": "*" 27 | }, 28 | "dependencies": { 29 | "tailwind-merge": "^1.9.0" 30 | }, 31 | "exports": { 32 | ".": "./index.ts" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /packages/theme/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tsconfig/base.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/tsconfig/README.md: -------------------------------------------------------------------------------- 1 | # tsconfig 2 | 3 | This package contains the base tsconfig file that is the one that all of the other `tsconfig.json` files extend from. 4 | -------------------------------------------------------------------------------- /packages/tsconfig/base.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "astro/tsconfigs/base", 4 | "display": "Default", 5 | "compilerOptions": { 6 | "jsx": "react-jsx", 7 | "jsxImportSource": "preact", 8 | "types": [ 9 | "@astrojs/image/client" 10 | ], 11 | "baseUrl": "../../", 12 | "paths": { 13 | "@packages/*": [ 14 | "packages/*" 15 | ] 16 | } 17 | }, 18 | "exclude": [ 19 | "node_modules" 20 | ] 21 | } -------------------------------------------------------------------------------- /packages/tsconfig/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tsconfig", 3 | "version": "0.0.1", 4 | "license": "MIT", 5 | "scripts": { 6 | "format": "format" 7 | }, 8 | "devDependencies": { 9 | "format": "*" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sandbox.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "infiniteLoopProtection": true, 3 | "hardReloadOnChange": false, 4 | "view": "browser", 5 | "template": "node", 6 | "container": { 7 | "port": 3000, 8 | "startScript": "dev", 9 | "node": "16" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turborepo.org/schema.json", 3 | "globalDependencies": [ 4 | "packages/**", 5 | "apps/**/public/**", 6 | "apps/**/astro.config.ts", 7 | "apps/**/package.json", 8 | "apps/**/tsconfig.json", 9 | "**/.env", 10 | "public/**" 11 | ], 12 | "pipeline": { 13 | "dev": { 14 | "dependsOn": ["^dev"] 15 | }, 16 | "test": { 17 | "dependsOn": ["^test"] 18 | }, 19 | "coverage": { 20 | "dependsOn": ["^coverage"] 21 | }, 22 | "playwright": { 23 | "dependsOn": ["^playwright"] 24 | }, 25 | "build": { 26 | "dependsOn": ["^build"], 27 | "outputs": ["dist/**", ".vercel/output/**"], 28 | "inputs": ["src/**", "vercel.json"] 29 | }, 30 | "lint": {}, 31 | "format": {} 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vercel-root-dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kyr0/astro-launchpad/0419979472a4a8956b0539410356ae64a97cc970/vercel-root-dir.png --------------------------------------------------------------------------------