├── .github └── FUNDING.yml ├── .gitignore ├── .nojekyll ├── .nvmrc ├── .vscode └── extensions.json ├── LICENSE ├── README.md ├── astro.config.mjs ├── docs ├── .nojekyll ├── _astro │ └── index.bxDPHZnf.css ├── img │ ├── features │ │ ├── icon1.svg │ │ ├── icon2.svg │ │ ├── icon3.svg │ │ ├── icon4.svg │ │ ├── icon5.svg │ │ ├── icon6.svg │ │ ├── icon7.svg │ │ └── icon8.svg │ ├── github.svg │ ├── logo.svg │ ├── undraw_Friends_online_re_r7pq.svg │ └── undraw_asset_selection_ix3v.svg ├── imprint │ └── index.html ├── index.html ├── privacy │ └── index.html └── robots.txt ├── package-lock.json ├── package.json ├── preview.png ├── public ├── img │ ├── features │ │ ├── icon1.svg │ │ ├── icon2.svg │ │ ├── icon3.svg │ │ ├── icon4.svg │ │ ├── icon5.svg │ │ ├── icon6.svg │ │ ├── icon7.svg │ │ └── icon8.svg │ ├── github.svg │ ├── logo.svg │ ├── undraw_Friends_online_re_r7pq.svg │ └── undraw_asset_selection_ix3v.svg └── robots.txt ├── src ├── components │ ├── Footer.astro │ ├── Head.astro │ ├── JS.astro │ ├── Navbar.astro │ └── sections │ │ ├── About.astro │ │ ├── Features.astro │ │ ├── Header.astro │ │ ├── Register.astro │ │ ├── SectionResolver.astro │ │ └── Wrapper.astro ├── content │ ├── config.ts │ └── sections │ │ ├── about.md │ │ ├── features.md │ │ └── register.md ├── data │ ├── features.json │ └── site.json ├── env.d.ts ├── layouts │ ├── Base.astro │ └── Page.astro ├── pages │ ├── imprint.md │ ├── index.astro │ └── privacy.md └── styles │ ├── global.css │ └── normalize.css ├── tailwind.config.cjs └── tsconfig.json /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [ttntm] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: ['https://www.buymeacoffee.com/ttntm'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | .astro/ 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | lerna-debug.log* 11 | 12 | # Diagnostic reports (https://nodejs.org/api/report.html) 13 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 14 | 15 | # Runtime data 16 | pids 17 | *.pid 18 | *.seed 19 | *.pid.lock 20 | 21 | # Directory for instrumented libs generated by jscoverage/JSCover 22 | lib-cov 23 | 24 | # Coverage directory used by tools like istanbul 25 | coverage 26 | *.lcov 27 | 28 | # nyc test coverage 29 | .nyc_output 30 | 31 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 32 | .grunt 33 | 34 | # Bower dependency directory (https://bower.io/) 35 | bower_components 36 | 37 | # node-waf configuration 38 | .lock-wscript 39 | 40 | # Compiled binary addons (https://nodejs.org/api/addons.html) 41 | build/Release 42 | 43 | # Dependency directories 44 | node_modules/ 45 | jspm_packages/ 46 | 47 | # TypeScript v1 declaration files 48 | typings/ 49 | 50 | # TypeScript cache 51 | *.tsbuildinfo 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Microbundle cache 60 | .rpt2_cache/ 61 | .rts2_cache_cjs/ 62 | .rts2_cache_es/ 63 | .rts2_cache_umd/ 64 | 65 | # Optional REPL history 66 | .node_repl_history 67 | 68 | # Output of 'npm pack' 69 | *.tgz 70 | 71 | # Yarn Integrity file 72 | .yarn-integrity 73 | 74 | # dotenv environment variables file 75 | .env 76 | .env.test 77 | 78 | # parcel-bundler cache (https://parceljs.org/) 79 | .cache 80 | 81 | # Next.js build output 82 | .next 83 | 84 | # Nuxt.js build / generate output 85 | .nuxt 86 | dist 87 | 88 | # Gatsby files 89 | .cache/ 90 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 91 | # https://nextjs.org/blog/next-9-1#public-directory-support 92 | # public 93 | 94 | # vuepress build output 95 | .vuepress/dist 96 | 97 | # Serverless directories 98 | .serverless/ 99 | 100 | # FuseBox cache 101 | .fusebox/ 102 | 103 | # DynamoDB Local files 104 | .dynamodb/ 105 | 106 | # TernJS port file 107 | .tern-port 108 | -------------------------------------------------------------------------------- /.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ttntm/astro-landing-page/cc5b255a79e828ff68532a65da43717489b39eea/.nojekyll -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 18.14.1 2 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "astro-build.astro-vscode", 4 | "bradlc.vscode-tailwindcss" 5 | ] 6 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Tom Doe 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # astro-landing-page 2 | 3 | A simple landing page built with Astro and Tailwind CSS. 4 | 5 | [![preview](./preview.png)](https://awesomestro.ttntm.me) 6 | 7 | > Port of the [11ty](https://github.com/ttntm/11ty-landing-page) & [Hugo](https://github.com/ttntm/hugo-landing-page) versions 8 | 9 | ## How to use this template 10 | 11 | **Requirements:** 12 | 13 | 1. Astro (developed and tested with version 2.10.12) 14 | 2. Tailwind CSS (Astro integration) 15 | 16 | All other dependencies are either linked from a CDN or included in this repository. 17 | 18 | **Setup:** 19 | 20 | 1. Fork, clone or download 21 | 2. `cd` into the root folder 22 | 3. run `npm install` 23 | 4. run `npm run dev` 24 | 5. open a browser and go to `http://localhost:4321` 25 | 26 | **Setup Alternative:** 27 | 28 | `npm create astro@latest -- --template ttntm/astro-landing-page` 29 | 30 | See: [Starter Templates](https://docs.astro.build/en/install/auto/#starter-templates) in the official docs. 31 | 32 | **Basic configuration:** 33 | 34 | 1. Astro -> `./astro.config.mjs` 35 | 2. Tailwind -> `./tailwind.config.cjs` 36 | 3. Netlify -> `./netlify.toml` 37 | 38 | CSS (in `./src/styles/`) is processed by Astro directly; this project is using the [Tailwind integration module](https://docs.astro.build/en/guides/integrations-guide/tailwind/). 39 | 40 | **Deployment:** 41 | 42 | Astro requires the final deployed URL in its config file. 43 | 44 | Replace the placeholder with your site's URL and keep the trailing slash: 45 | 46 | ```js 47 | case 'production': 48 | build.siteURL = 'https://example.com/' 49 | break 50 | ``` 51 | 52 | **Change Content:** 53 | 54 | Page content is stored in 55 | 56 | - `./src/pages/` 57 | - `imprint.md` 58 | - `privacy.md` 59 | - `./src/content/sections/` 60 | - `./src/data/features.json` 61 | 62 | **Change Templates/Layout:** 63 | 64 | Page structure and templates are stored in `./src/layouts/` and can be edited there. 65 | 66 | Best have a look at `./layouts/Base.astro` first to understand how it all comes together - the page itself is constructed from partial templates stored in `./src/components/` and each section has a corresponding template file in the `sections` subfolder. 67 | 68 | Sections are a so called [collection](https://docs.astro.build/en/guides/content-collections/) that's defined in `./src/content/config.ts`. They are processed in alphabetical order (as stored in `./src/content/sections/`) by the `Wrapper.astro` component (`./src/components/sections/`). The wrapper passes them into the `SectionResolver.astro` component (`./src/components/sections/`); this intermediary resolver should help reduce redundancy in keeping the actual section components as "dumb" as possible. 69 | 70 | **Change images:** 71 | 72 | Images are stored in `./public/img/`; everything in there can be considered a placeholder that should eventually be replaced with your actual production images. 73 | -------------------------------------------------------------------------------- /astro.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'astro/config' 2 | import tailwind from '@astrojs/tailwind' 3 | 4 | const build = { 5 | baseURL: '/', 6 | outDir: './dist', 7 | siteURL: 'http://localhost:4321/' 8 | } 9 | 10 | const env = process.env.NODE_ENV 11 | 12 | switch (env) { 13 | case 'pages': 14 | build.baseURL = '/astro-landing-page/' 15 | build.outDir = './docs' 16 | build.siteURL = 'https://ttntm.github.io/astro-landing-page/' 17 | break 18 | 19 | case 'production': 20 | build.siteURL = 'https://example.com/' 21 | break 22 | 23 | default: 24 | break 25 | } 26 | 27 | // https://astro.build/config 28 | export default defineConfig({ 29 | site: build.siteURL, 30 | base: build.baseURL, 31 | outDir: build.outDir, 32 | integrations: [ 33 | tailwind({ 34 | applyBaseStyles: false 35 | }) 36 | ] 37 | }) 38 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ttntm/astro-landing-page/cc5b255a79e828ff68532a65da43717489b39eea/docs/.nojekyll -------------------------------------------------------------------------------- /docs/_astro/index.bxDPHZnf.css: -------------------------------------------------------------------------------- 1 | *,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.fixed{position:fixed}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.m-6{margin:1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.hidden{display:none}.h-12{height:3rem}.h-full{height:100%}.h-px{height:1px}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-auto{width:auto}.w-full{width:100%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.flex-shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-indigo-800{--tw-border-opacity: 1;border-color:rgb(55 48 163 / var(--tw-border-opacity))}.border-purple-600{--tw-border-opacity: 1;border-color:rgb(147 51 234 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-blue-900{--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-4{padding:1rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-12{padding-bottom:3rem}.pb-4{padding-bottom:1rem}.pl-0{padding-left:0}.pr-0{padding-right:0}.pt-16{padding-top:4rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-light{font-weight:300}.uppercase{text-transform:uppercase}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-200{--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-purple-300{--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}*,*:before,*:after{scroll-behavior:smooth}html{-webkit-tap-highlight-color:rgba(0,0,0,0)}@media (min-width: 576px){body::-webkit-scrollbar-track{box-shadow:inset 0 0 6px #0000004d;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f7fa}body::-webkit-scrollbar{width:6px;background-color:#f5f7fa}body::-webkit-scrollbar-thumb{background-color:#7c3aed}}.hamburger{cursor:pointer;width:48px;height:48px;transition:all .25s}.hamburger__top-bun,.hamburger__bottom-bun{content:"";position:absolute;width:24px;height:2px;background:#000;transform:rotate(0);transition:all .5s}.hamburger:hover [class*=-bun]{background:#333}.hamburger__top-bun{transform:translateY(-5px)}.hamburger__bottom-bun{transform:translateY(3px)}.open{transform:rotate(90deg);transform:translateY(-1px)}.open .hamburger__top-bun{transform:rotate(45deg) translateY(0)}.open .hamburger__bottom-bun{transform:rotate(-45deg) translateY(0)}*:hover{transition:all .4s ease}.header{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%23f5f7fa' fill-opacity='0.4' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E"),linear-gradient(135deg,rgba(245,247,250,1) 0%,#fff 20%,#fff 80%,rgba(245,247,250,1) 100%)}.content__container{overflow:hidden;height:40px}.content__container__list{list-style:none;animation-name:change;animation-duration:20s;animation-iteration-count:infinite}.content__container__list__item{margin:0;line-height:40px}@keyframes change{0%,7.14%,to{transform:translateZ(0)}14.28%{transform:translate3d(0,-14.28%,0)}21.42%{transform:translate3d(0,-28.57%,0)}28.57%{transform:translate3d(0,-42.85%,0)}35.71%{transform:translate3d(0,-57.14%,0)}42.85%{transform:translate3d(0,-71.42%,0)}53.5%{transform:translate3d(0,-85.71%,0)}64.28%{transform:translate3d(0,-71.42%,0)}71.42%{transform:translate3d(0,-57.14%,0)}78.54%{transform:translate3d(0,-42.85%,0)}85.71%{transform:translate3d(0,-28.57%,0)}92.85%{transform:translate3d(0,-14.28%,0)}}.tippy-tooltip{background-color:#ccc;color:#c3dafe;opacity:.85}.tippy-tooltip[data-animatefill]{background-color:transparent}.tippy-tooltip .tippy-backdrop{background-color:#ccc;opacity:.5}.tippy-tooltip[x-placement^=bottom] .tippy-arrow{border-bottom-color:#ccc}.hover\:border-purple-600:hover{--tw-border-opacity: 1;border-color:rgb(147 51 234 / var(--tw-border-opacity))}.hover\:bg-blue-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:bg-opacity-50:hover{--tw-bg-opacity: .5}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity))}.hover\:no-underline:hover{text-decoration-line:none}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-gray-400:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.focus\:bg-gray-300:focus{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.focus\:text-gray-800:focus{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:ml-4{margin-left:1rem}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-auto{height:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-auto{width:auto}.sm\:w-px{width:1px}.sm\:flex-none{flex:none}.sm\:flex-row{flex-direction:row}.sm\:justify-center{justify-content:center}.sm\:self-center{align-self:center}.sm\:bg-transparent{background-color:transparent}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-0{padding-top:0;padding-bottom:0}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}.sm\:pb-0{padding-bottom:0}.sm\:pl-8{padding-left:2rem}.sm\:pr-4{padding-right:1rem}.sm\:pr-8{padding-right:2rem}.sm\:text-left{text-align:left}.sm\:shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media (min-width: 768px){.md\:w-5\/6{width:83.333333%}}@media (min-width: 1280px){.xl\:w-1\/2{width:50%}.xl\:w-1\/3{width:33.333333%}.xl\:w-1\/4{width:25%}.xl\:w-2\/3{width:66.666667%}.xl\:w-3\/4{width:75%}.xl\:w-4\/5{width:80%}.xl\:pl-3{padding-left:.75rem}} 2 | -------------------------------------------------------------------------------- /docs/img/features/icon1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/features/icon2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/features/icon3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/features/icon4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/features/icon5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/features/icon6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/features/icon7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/features/icon8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/img/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 58 | 62 | 66 | 70 | 74 | 78 | 82 | 88 | 92 | 93 | -------------------------------------------------------------------------------- /docs/img/undraw_Friends_online_re_r7pq.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img/undraw_asset_selection_ix3v.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/imprint/index.html: -------------------------------------------------------------------------------- 1 | Imprint | AWE.SOME 2 |

Imprint

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id rhoncus est. Nullam sit amet justo nisi. Aliquam elementum iaculis nulla bibendum congue. Integer convallis ut nisi at tincidunt. Sed eu diam ex. Ut efficitur velit ut ultrices semper. Morbi suscipit ut purus a placerat. Cras massa lorem, pretium et nibh in, faucibus fermentum dolor. Nulla lacinia malesuada molestie. Proin et risus turpis. Aenean lacinia, orci at egestas fringilla, sem libero facilisis lectus, ut porta justo ligula a quam. Mauris vulputate purus mauris, eget semper ante rutrum id. Duis vestibulum, turpis at ultricies aliquam, enim dolor lobortis leo, at laoreet elit odio at nunc. Aliquam sit amet erat mi.

4 |

Cras mattis justo id convallis porta. Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id. Mauris ornare massa a nisi gravida, id ultrices ex cursus. Donec quis porttitor nisl, non viverra dui. Donec nec gravida arcu. Pellentesque dignissim at libero id bibendum. Vivamus pulvinar nibh risus, et egestas odio interdum id. Cras eleifend risus molestie mollis finibus. Aenean tortor elit, accumsan vel fermentum pharetra, molestie ut felis.

5 |

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Aliquam semper felis sed leo sodales scelerisque. Vivamus vitae erat vel tellus condimentum consectetur at ac velit. Mauris massa tortor, cursus sit amet turpis in, lacinia ultricies nulla.

6 |

Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.

7 |

Nam non quam vel velit sagittis consequat non vel odio. Phasellus condimentum dictum orci, quis rhoncus lacus hendrerit non. Ut vel nisl lectus. Duis vitae varius enim. Morbi placerat urna sit amet sollicitudin viverra. Vivamus maximus metus ac ornare venenatis. Ut suscipit nec sapien ac fringilla. Phasellus et justo eget odio lacinia feugiat. Nullam laoreet eros a lectus pretium, sed euismod velit tincidunt.

8 |

Images: Undraw via undraw.co/illustrations

9 |

Feature icons: “Webicons” created by Vlad Cristea, obtained via www.graphicdelivery.com/webicons

10 | © AWE.SOME
GitHub icon
-------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 🚀 AWE.SOME - An Astro Landing Page Template

2 | New Thing: AWE.SOME

3 | Intro goes here... 4 |

  • Cool Feature
  • Another Feature
  • Something Else
  • Why Not
  • Rotating
  • List
  • Items Here

...think about it!

AWE.SOME header
5 | More Information 6 |

AWE.SOME Heading

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Vivamus vitae erat vel tellus condimentum consectetur.

AWE.SOME

Most AWE.SOME Features

Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id.

AWE.SOME Feature One

AWE.SOME Feature One

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Two

AWE.SOME Feature Two

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Three

AWE.SOME Feature Three

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Four

AWE.SOME Feature Four

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Five

AWE.SOME Feature Five

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.
AWE.SOME Feature Six

AWE.SOME Feature Six

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt.

...and so much more!

Registration

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi.

10 | © AWE.SOME
GitHub icon
-------------------------------------------------------------------------------- /docs/privacy/index.html: -------------------------------------------------------------------------------- 1 | Privacy Policy | AWE.SOME 2 |

Privacy Policy

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut id rhoncus est. Nullam sit amet justo nisi. Aliquam elementum iaculis nulla bibendum congue. Integer convallis ut nisi at tincidunt. Sed eu diam ex. Ut efficitur velit ut ultrices semper. Morbi suscipit ut purus a placerat. Cras massa lorem, pretium et nibh in, faucibus fermentum dolor. Nulla lacinia malesuada molestie. Proin et risus turpis. Aenean lacinia, orci at egestas fringilla, sem libero facilisis lectus, ut porta justo ligula a quam. Mauris vulputate purus mauris, eget semper ante rutrum id. Duis vestibulum, turpis at ultricies aliquam, enim dolor lobortis leo, at laoreet elit odio at nunc. Aliquam sit amet erat mi.

4 |

Cras mattis justo id convallis porta. Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id. Mauris ornare massa a nisi gravida, id ultrices ex cursus. Donec quis porttitor nisl, non viverra dui. Donec nec gravida arcu. Pellentesque dignissim at libero id bibendum. Vivamus pulvinar nibh risus, et egestas odio interdum id. Cras eleifend risus molestie mollis finibus. Aenean tortor elit, accumsan vel fermentum pharetra, molestie ut felis.

5 |

Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Aliquam semper felis sed leo sodales scelerisque. Vivamus vitae erat vel tellus condimentum consectetur at ac velit. Mauris massa tortor, cursus sit amet turpis in, lacinia ultricies nulla.

6 |

Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.

7 |

Nam non quam vel velit sagittis consequat non vel odio. Phasellus condimentum dictum orci, quis rhoncus lacus hendrerit non. Ut vel nisl lectus. Duis vitae varius enim. Morbi placerat urna sit amet sollicitudin viverra. Vivamus maximus metus ac ornare venenatis. Ut suscipit nec sapien ac fringilla. Phasellus et justo eget odio lacinia feugiat. Nullam laoreet eros a lectus pretium, sed euismod velit tincidunt.

8 |

Website enhancements

9 |

This website uses the follwing packages from unpkg.com:

10 |
    11 |
  • ‐ popper.js
  • 12 |
  • ‐ tippy.js
  • 13 |
14 |

Using these packages, personal data may be transmitted.

15 |

Your rights

16 |

Integer finibus sem sit amet diam luctus, ut posuere enim dapibus. Nunc euismod dignissim dui a maximus. Phasellus pulvinar neque at lorem ultricies suscipit. Maecenas felis erat, ornare eget egestas et, ultricies vitae ante. In convallis quam lectus, sit amet elementum ligula pulvinar ac. Integer sapien ipsum, congue a purus vel, sollicitudin lacinia ligula. Ut varius sit amet lectus quis congue. Ut viverra lectus tellus, a pharetra neque egestas eu. Morbi feugiat, arcu id bibendum vulputate, risus mi finibus enim, sed pulvinar ipsum sem eu risus. Aenean accumsan elementum ipsum, eu porttitor libero auctor at. Duis nec ipsum velit. Aliquam ac ullamcorper nisl. Duis mattis malesuada leo, quis egestas turpis molestie nec. Curabitur dui tortor, volutpat quis varius et, posuere eget augue. Praesent sed pretium dui. Vivamus auctor ex vitae nisl commodo interdum.

17 | © AWE.SOME
GitHub icon
-------------------------------------------------------------------------------- /docs/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | User-agent: CCBot 5 | Disallow: / 6 | 7 | User-agent: ChatGPT-User 8 | Disallow: / 9 | 10 | User-agent: GPTBot 11 | Disallow: / 12 | 13 | User-agent: Google-Extended 14 | Disallow: / 15 | 16 | User-agent: Omgilibot 17 | Disallow: / 18 | 19 | User-Agent: FacebookBot 20 | Disallow: / 21 | 22 | User-agent: Amazonbot 23 | Disallow: / 24 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "alp", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "NODE_ENV=dev astro dev", 8 | "start": "NODE_ENV=dev astro dev", 9 | "build": "NODE_ENV=production astro build", 10 | "build-ghp": "NODE_ENV=pages astro build && cp .nojekyll ./docs", 11 | "preview": "astro preview" 12 | }, 13 | "keywords": [], 14 | "author": "ttntm", 15 | "license": "MIT", 16 | "dependencies": { 17 | "@astrojs/tailwind": "^5.0.3", 18 | "@tailwindcss/typography": "^0.5.9", 19 | "astro": "^4.0.2", 20 | "tailwindcss": "^3.3.3" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ttntm/astro-landing-page/cc5b255a79e828ff68532a65da43717489b39eea/preview.png -------------------------------------------------------------------------------- /public/img/features/icon1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/features/icon2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/features/icon3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/features/icon4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/features/icon5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/features/icon6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/features/icon7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/features/icon8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/img/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 58 | 62 | 66 | 70 | 74 | 78 | 82 | 88 | 92 | 93 | -------------------------------------------------------------------------------- /public/img/undraw_Friends_online_re_r7pq.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/img/undraw_asset_selection_ix3v.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | User-agent: CCBot 5 | Disallow: / 6 | 7 | User-agent: ChatGPT-User 8 | Disallow: / 9 | 10 | User-agent: GPTBot 11 | Disallow: / 12 | 13 | User-agent: Google-Extended 14 | Disallow: / 15 | 16 | User-agent: Omgilibot 17 | Disallow: / 18 | 19 | User-Agent: FacebookBot 20 | Disallow: / 21 | 22 | User-agent: Amazonbot 23 | Disallow: / 24 | -------------------------------------------------------------------------------- /src/components/Footer.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import siteData from '../data/site.json' 3 | 4 | const pn = Astro.url.pathname 5 | const isHome = pn === '/' 6 | const site = Astro.site 7 | const abtLink = isHome 8 | ? '#about' 9 | : `${site}#about` 10 | const ftLink = isHome 11 | ? '#features' 12 | : `${site}#features` 13 | --- 14 | 47 |
48 | 49 | © {siteData.author} 50 | 51 |
52 |
53 | 54 |
55 |
56 | 57 | GitHub icon 58 | 59 |
60 | 61 | 66 | -------------------------------------------------------------------------------- /src/components/Head.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import siteData from '../data/site.json' 3 | 4 | interface Props { 5 | image?: string, 6 | title?: string 7 | } 8 | 9 | const { image, title } = Astro.props 10 | const canonicalURL = new URL(Astro.url.pathname, Astro.site) 11 | const imageURL = image 12 | ? new URL(image, Astro.site) 13 | : undefined 14 | --- 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {imageURL && } 32 | 33 | 34 | 35 | {title ? title : siteData.title} 36 | -------------------------------------------------------------------------------- /src/components/JS.astro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 41 | -------------------------------------------------------------------------------- /src/components/Navbar.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import siteData from '../data/site.json' 3 | 4 | const pn = Astro.url.pathname 5 | const isHome = pn === '/' 6 | const site = Astro.site 7 | const abtLink = isHome 8 | ? '#about' 9 | : `${site}#about` 10 | const ftLink = isHome 11 | ? '#features' 12 | : `${site}#features` 13 | const regLink = isHome 14 | ? '#register' 15 | : `${site}#register` 16 | --- 17 | 37 | -------------------------------------------------------------------------------- /src/components/sections/About.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props { 3 | title: string 4 | } 5 | 6 | const site = Astro.site 7 | const { title } = Astro.props 8 | --- 9 |
10 |
11 |

{title}

12 |
13 | 14 |
15 | AWE.SOME 16 |
17 |
18 | See How it Works 19 |
20 |
21 | -------------------------------------------------------------------------------- /src/components/sections/Features.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import features from '../../data/features.json' 3 | 4 | interface Props { 5 | afterTitle?: string, 6 | title: string 7 | } 8 | 9 | const site = Astro.site 10 | const { afterTitle, title } = Astro.props 11 | --- 12 |
13 |
14 |

{title}

15 |
16 | 17 |
18 |
19 |
20 | {features.map((feat) => ( 21 |
22 |
23 | {feat.title} 24 |
25 |
26 |

{feat.title}

27 |
28 | {feat.content} 29 |
30 |
31 |
32 | ))} 33 |
34 |
35 | {afterTitle &&

{afterTitle}

} 36 |
37 |
38 | Register Now 39 |
40 |
41 | -------------------------------------------------------------------------------- /src/components/sections/Header.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Navbar from '../Navbar.astro' 3 | 4 | const headerListItems = [ 5 | 'Cool Feature', 6 | 'Another Feature', 7 | 'Something Else', 8 | 'Why Not', 9 | 'Rotating', 10 | 'List', 11 | 'Items Here' 12 | ] 13 | const site = Astro.site 14 | --- 15 |
16 | 17 |
18 |
19 |
20 |

21 | New Thing: AWE.SOME 22 |

23 |

24 | Intro goes here... 25 |

26 | 27 |
    28 | {headerListItems.map((item) =>
  • {item}
  • )} 29 |
30 |
31 |

...think about it!

32 |
33 |
34 | AWE.SOME header 35 |
36 |
37 |
38 | 43 |
44 | -------------------------------------------------------------------------------- /src/components/sections/Register.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props { 3 | title: string 4 | } 5 | 6 | const { title } = Astro.props 7 | --- 8 |
9 |
10 |

{title}

11 |
12 | 13 |
14 |
15 |
16 | 17 | 20 |
21 | 27 |
28 |
29 |
30 | -------------------------------------------------------------------------------- /src/components/sections/SectionResolver.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import type { CollectionEntry } from 'astro:content' 3 | import About from './About.astro' 4 | import Features from './Features.astro' 5 | import Register from './Register.astro' 6 | 7 | interface Props { 8 | afterTitle: string, 9 | sect: CollectionEntry<'sections'>, 10 | title: string, 11 | type: string 12 | } 13 | 14 | const { afterTitle, sect, title, type } = Astro.props 15 | const { Content } = await sect.render() 16 | --- 17 | 18 | {type === 'about' && 19 | 20 | } 21 | 22 | {type === 'features' && 23 | 24 | } 25 | 26 | {type === 'register' && 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/components/sections/Wrapper.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { getCollection } from 'astro:content' 3 | import Header from './Header.astro' 4 | import SectionResolver from './SectionResolver.astro' 5 | 6 | const sections = await getCollection('sections') 7 | --- 8 |
9 |
10 | {sections.map(sect => { 11 | return 17 | })} 18 |
19 | -------------------------------------------------------------------------------- /src/content/config.ts: -------------------------------------------------------------------------------- 1 | // 1. Import utilities from `astro:content` 2 | import { z, defineCollection } from 'astro:content' 3 | 4 | // 2. Define a `type` and `schema` for each collection 5 | const sectionsCollection = defineCollection({ 6 | type: 'content', // v2.5.0 and later 7 | schema: z.object({ 8 | title: z.string(), 9 | afterTitle: z.string().optional(), 10 | type: z.string() 11 | }) 12 | }) 13 | 14 | // 3. Export a single `collections` object to register your collection(s) 15 | export const collections = { 16 | 'sections': sectionsCollection 17 | } 18 | -------------------------------------------------------------------------------- /src/content/sections/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: AWE.SOME Heading 3 | type: about 4 | --- 5 | 6 | Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt. Vivamus vitae erat vel tellus condimentum consectetur. -------------------------------------------------------------------------------- /src/content/sections/features.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Most AWE.SOME Features 3 | afterTitle: ...and so much more! 4 | type: features 5 | --- 6 | 7 | Pellentesque ullamcorper fringilla odio at pretium. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla mattis erat dui, ut tempor lectus dictum id. -------------------------------------------------------------------------------- /src/content/sections/register.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Registration 3 | type: register 4 | --- 5 | 6 | Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. -------------------------------------------------------------------------------- /src/data/features.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "AWE.SOME Feature One", 4 | "icon": "icon1.svg", 5 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt." 6 | }, 7 | { 8 | "title": "AWE.SOME Feature Two", 9 | "icon": "icon2.svg", 10 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt." 11 | }, 12 | { 13 | "title": "AWE.SOME Feature Three", 14 | "icon": "icon3.svg", 15 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt." 16 | }, 17 | { 18 | "title": "AWE.SOME Feature Four", 19 | "icon": "icon4.svg", 20 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt." 21 | }, 22 | { 23 | "title": "AWE.SOME Feature Five", 24 | "icon": "icon5.svg", 25 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt." 26 | }, 27 | { 28 | "title": "AWE.SOME Feature Six", 29 | "icon": "icon6.svg", 30 | "content": "Maecenas pulvinar ultricies dolor, vitae sagittis nunc aliquam non. Cras vitae eros mi. Pellentesque ac orci mi. Ut dignissim tincidunt ex id tincidunt." 31 | } 32 | ] -------------------------------------------------------------------------------- /src/data/site.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "AWE.SOME", 3 | "description": "AWE.SOME - An Astro Landing Page Template", 4 | "title": "🚀 AWE.SOME - An Astro Landing Page Template", 5 | "language": "en", 6 | "social": [ 7 | { 8 | "title": "Mastodon", 9 | "url": "https://mastodon.social/#" 10 | }, 11 | { 12 | "title": "LinkedIn", 13 | "url": "https://linkedin.com/company/#" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// -------------------------------------------------------------------------------- /src/layouts/Base.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import siteData from '../data/site.json' 3 | import Footer from '../components/Footer.astro' 4 | import Head from '../components/Head.astro' 5 | import JS from '../components/JS.astro' 6 | import '../styles/global.css' 7 | --- 8 | 9 | 10 | 11 | 12 |