├── assets ├── icon.png ├── apple-badge.png ├── github-badge.png └── screenshots │ ├── screenshot_1.png │ ├── screenshot_2.png │ ├── screenshot_3.png │ ├── screenshot_4.png │ └── screenshot_5.png ├── Gemfile ├── _layouts ├── page.html ├── post.html └── default.html ├── tailwind.config.js ├── 404.html ├── postcss.config.js ├── package.json ├── _pages └── privacypolicy.md ├── main.css ├── README.md ├── _includes └── footer.html ├── LICENSE ├── _config.yml ├── Gemfile.lock ├── index.html └── .gitignore /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikakruschel/app-landing-page/HEAD/assets/icon.png -------------------------------------------------------------------------------- /assets/apple-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikakruschel/app-landing-page/HEAD/assets/apple-badge.png -------------------------------------------------------------------------------- /assets/github-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikakruschel/app-landing-page/HEAD/assets/github-badge.png -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gem "jekyll", "~> 4.2.0" 3 | 4 | group :jekyll_plugins do 5 | gem 'jekyll-postcss' 6 | end -------------------------------------------------------------------------------- /assets/screenshots/screenshot_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikakruschel/app-landing-page/HEAD/assets/screenshots/screenshot_1.png -------------------------------------------------------------------------------- /assets/screenshots/screenshot_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikakruschel/app-landing-page/HEAD/assets/screenshots/screenshot_2.png -------------------------------------------------------------------------------- /assets/screenshots/screenshot_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikakruschel/app-landing-page/HEAD/assets/screenshots/screenshot_3.png -------------------------------------------------------------------------------- /assets/screenshots/screenshot_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikakruschel/app-landing-page/HEAD/assets/screenshots/screenshot_4.png -------------------------------------------------------------------------------- /assets/screenshots/screenshot_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mikakruschel/app-landing-page/HEAD/assets/screenshots/screenshot_5.png -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | 6 | {{ content }} 7 | {% include footer.html %} 8 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | purge: [ 3 | '_includes/**/*.html', 4 | '_layouts/**/*.html', 5 | '_pages/*.md', 6 | '*.html', 7 | ], 8 | darkMode: 'media', 9 | } 10 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | --- 4 | 5 |

Page Not Found

6 |

The page you were looking for could not be found. It might have been removed, renamed, or did not exist in the first 7 | place.

-------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | require('postcss-import'), 4 | require('tailwindcss'), 5 | require('autoprefixer'), 6 | ...(process.env.JEKYLL_ENV == "production" 7 | ? [require('cssnano')({ preset: 'default' })] 8 | : []) 9 | ] 10 | }; 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app-landing-page", 3 | "version": "1.0.0", 4 | "description": "Create and deploy an iOS app landing page with Jekyll", 5 | "scripts": {}, 6 | "author": "Miká Kruschel", 7 | "license": "MIT", 8 | "devDependencies": { 9 | "@fullhuman/postcss-purgecss": "^4.0.0", 10 | "autoprefixer": "^10.2.6", 11 | "cssnano": "^4.1.11", 12 | "postcss": "^8.3.5", 13 | "postcss-import": "^12.0.1", 14 | "tailwindcss": "^2.2.4" 15 | } 16 | } -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | 6 | 7 | app icon 9 | 10 | 11 |
12 | {{ content }} 13 |
14 | 15 | {% include footer.html %} 16 | -------------------------------------------------------------------------------- /_pages/privacypolicy.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Privacy Policy 4 | permalink: /privacy/ 5 | include_in_footer: true 6 | --- 7 | 8 | # Privacy Policy 9 | We believe your data is yours and yours alone. We do not store or transmit your personal information or information about your computer, nor do we include any advertising or analytics software that talks to third parties. 10 | 11 | ## What Information Do We Collect? 12 | {{ site.app_name }} does *not* collect any personal information. 13 | 14 | ## Contact Us 15 | If you have any more questions, please feel free to contact us at: [{{ site.email }}](mailto:{{ site.email }}). 16 | -------------------------------------------------------------------------------- /main.css: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | @import "tailwindcss/base"; 4 | @import "tailwindcss/components"; 5 | @import "tailwindcss/utilities"; 6 | 7 | 8 | .markdown h1 { 9 | @apply text-4xl font-bold mb-2; 10 | } 11 | 12 | .markdown h2 { 13 | @apply font-semibold mt-4; 14 | } 15 | 16 | .markdown h3 { 17 | @apply font-semibold mt-4; 18 | } 19 | 20 | .markdown a { 21 | @apply whitespace-nowrap text-blue-900 dark:text-blue-200; 22 | } 23 | 24 | a { 25 | @apply text-blue-900 dark:text-blue-200; 26 | } 27 | 28 | ul { 29 | @apply list-disc list-outside ml-4; 30 | } 31 | 32 | ol { 33 | @apply list-decimal list-outside ml-4; 34 | } -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {{ site.app_name }} 11 | 12 | 13 | {% if site.app_id %} 14 | 15 | {% endif %} 16 | 17 | 18 | 19 | {{ content }} 20 | 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # App Landing Page 2 | 3 | Create and deploy an iOS app landing page with Jekyll 4 | 5 | 6 | 7 | ## Usage 8 | 9 | 1. Fork this repo or use it as a template 10 | 2. Edit `_config.yml` and enter the details for your app 11 | 3. Add screenshots (in `assets/screenshots/`) and app icon (in `assets` and add path in `_config.yml`) 12 | 4. Edit or remove Privacy Policy (`_pages/privacypolicy.md`) 13 | 5. Deploy to Vercel or Netlify ([guide](https://jekyllrb.com/resources/#guides)) 14 | 15 | ## Credits 16 | - [Jekyll](https://github.com/jekyll/jekyll) 17 | - Alternative by emilbaehr: [Automatic App Landing Page](https://github.com/emilbaehr/automatic-app-landing-page) 18 | 19 | ## License 20 | [MIT](https://choosealicense.com/licenses/mit/) -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Miká Kruschel 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 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | app_name: Awesome App 2 | app_subtitle: Short tagline 3 | app_download: https://apps.apple.com/us/app/flashtex-flashcards/id1534437697 4 | app_github: https://github.com/mikakruschel/app-landing-page 5 | app_id: 1534437697 6 | email: mail@kruschel.dev 7 | app_icon: /assets/icon.png 8 | favicon: /assets/icon.png 9 | 10 | made_by: // Made by [Miká Kruschel](https://kruschel.dev) 11 | 12 | links: 13 | - title: AppStore Connect Widget 14 | url: https://ac-widget.xyz 15 | 16 | app_description: | 17 | Create and deploy an iOS app landing page with Jekyll 18 | 19 | ## Usage 20 | 21 | 1. Fork this repo or use it as a template 22 | 2. Edit `_config.yml` and enter the details for your app 23 | 3. Add screenshots (in `assets/screenshots/`) and app icon (in `assets` and add path in `_config.yml`) 24 | 4. Edit or remove Privacy Policy (`_pages/privacypolicy.md`) 25 | 5. Deploy to Vercel or Netlify ([guide](https://jekyllrb.com/resources/#guides)) 26 | 27 |
This template is open source and can be found at [GitHub](https://github.com/mikakruschel/app-landing-page). 28 | 29 | #################################################### 30 | ### Jekyll Configuration. No need to touch this. ### 31 | #################################################### 32 | 33 | plugins: 34 | - jekyll-postcss 35 | 36 | exclude: 37 | - Gemfile 38 | - Gemfile.lock 39 | - package-lock.json 40 | - README.md 41 | - postcss.config.js 42 | - .gitignore 43 | - node_modules 44 | 45 | markdown: kramdown 46 | 47 | collections: 48 | pages: 49 | output: true 50 | permalink: /:path/ 51 | 52 | defaults: 53 | - scope: 54 | path: "assets/screenshots" 55 | values: 56 | screenshot: true 57 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.0) 5 | public_suffix (>= 2.0.2, < 5.0) 6 | colorator (1.1.0) 7 | concurrent-ruby (1.1.9) 8 | em-websocket (0.5.2) 9 | eventmachine (>= 0.12.9) 10 | http_parser.rb (~> 0.6.0) 11 | eventmachine (1.2.7) 12 | ffi (1.15.3) 13 | forwardable-extended (2.6.0) 14 | http_parser.rb (0.6.0) 15 | i18n (1.8.10) 16 | concurrent-ruby (~> 1.0) 17 | jekyll (4.2.0) 18 | addressable (~> 2.4) 19 | colorator (~> 1.0) 20 | em-websocket (~> 0.5) 21 | i18n (~> 1.0) 22 | jekyll-sass-converter (~> 2.0) 23 | jekyll-watch (~> 2.0) 24 | kramdown (~> 2.3) 25 | kramdown-parser-gfm (~> 1.0) 26 | liquid (~> 4.0) 27 | mercenary (~> 0.4.0) 28 | pathutil (~> 0.9) 29 | rouge (~> 3.0) 30 | safe_yaml (~> 1.0) 31 | terminal-table (~> 2.0) 32 | jekyll-postcss (0.4.1) 33 | jekyll-sass-converter (2.1.0) 34 | sassc (> 2.0.1, < 3.0) 35 | jekyll-watch (2.2.1) 36 | listen (~> 3.0) 37 | kramdown (2.3.1) 38 | rexml 39 | kramdown-parser-gfm (1.1.0) 40 | kramdown (~> 2.0) 41 | liquid (4.0.3) 42 | listen (3.5.1) 43 | rb-fsevent (~> 0.10, >= 0.10.3) 44 | rb-inotify (~> 0.9, >= 0.9.10) 45 | mercenary (0.4.0) 46 | pathutil (0.16.2) 47 | forwardable-extended (~> 2.6) 48 | public_suffix (4.0.6) 49 | rb-fsevent (0.11.0) 50 | rb-inotify (0.10.1) 51 | ffi (~> 1.0) 52 | rexml (3.2.5) 53 | rouge (3.26.0) 54 | safe_yaml (1.0.5) 55 | sassc (2.4.0) 56 | ffi (~> 1.9) 57 | terminal-table (2.0.0) 58 | unicode-display_width (~> 1.1, >= 1.1.1) 59 | unicode-display_width (1.7.0) 60 | 61 | PLATFORMS 62 | universal-darwin-20 63 | 64 | DEPENDENCIES 65 | jekyll (~> 4.2.0) 66 | jekyll-postcss 67 | 68 | BUNDLED WITH 69 | 2.2.4 70 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | --- 4 | 5 |
6 | app icon 8 |
9 |

{{ site.app_name }}

10 |

{{ site.app_subtitle }}

11 |
12 | 13 | download 14 | 15 | {% if site.app_github %} 16 | 17 | open on github 18 | 19 | {% endif %} 20 |
21 |
22 |
23 | 24 |
25 |

Screenshots

26 |
27 | {% assign screenshots = site.static_files | where: "screenshot", true %} 28 | {% for img in screenshots %} 29 | {{ img.name }} 31 | {% endfor %} 32 |
33 |
34 | 35 | {% if site.app_description %} 36 |
37 |

Description

38 | {{ site.app_description | markdownify }} 39 |
40 | {% endif %} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/jekyll,node,macos 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=jekyll,node,macos 4 | 5 | ### Jekyll ### 6 | _site/ 7 | .sass-cache/ 8 | .jekyll-cache/ 9 | .jekyll-metadata 10 | 11 | ### macOS ### 12 | # General 13 | .DS_Store 14 | .AppleDouble 15 | .LSOverride 16 | 17 | # Icon must end with two \r 18 | Icon 19 | 20 | 21 | # Thumbnails 22 | ._* 23 | 24 | # Files that might appear in the root of a volume 25 | .DocumentRevisions-V100 26 | .fseventsd 27 | .Spotlight-V100 28 | .TemporaryItems 29 | .Trashes 30 | .VolumeIcon.icns 31 | .com.apple.timemachine.donotpresent 32 | 33 | # Directories potentially created on remote AFP share 34 | .AppleDB 35 | .AppleDesktop 36 | Network Trash Folder 37 | Temporary Items 38 | .apdisk 39 | 40 | ### Node ### 41 | # Logs 42 | logs 43 | *.log 44 | npm-debug.log* 45 | yarn-debug.log* 46 | yarn-error.log* 47 | lerna-debug.log* 48 | .pnpm-debug.log* 49 | 50 | # Diagnostic reports (https://nodejs.org/api/report.html) 51 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 52 | 53 | # Runtime data 54 | pids 55 | *.pid 56 | *.seed 57 | *.pid.lock 58 | 59 | # Directory for instrumented libs generated by jscoverage/JSCover 60 | lib-cov 61 | 62 | # Coverage directory used by tools like istanbul 63 | coverage 64 | *.lcov 65 | 66 | # nyc test coverage 67 | .nyc_output 68 | 69 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 70 | .grunt 71 | 72 | # Bower dependency directory (https://bower.io/) 73 | bower_components 74 | 75 | # node-waf configuration 76 | .lock-wscript 77 | 78 | # Compiled binary addons (https://nodejs.org/api/addons.html) 79 | build/Release 80 | 81 | # Dependency directories 82 | node_modules/ 83 | jspm_packages/ 84 | 85 | # Snowpack dependency directory (https://snowpack.dev/) 86 | web_modules/ 87 | 88 | # TypeScript cache 89 | *.tsbuildinfo 90 | 91 | # Optional npm cache directory 92 | .npm 93 | 94 | # Optional eslint cache 95 | .eslintcache 96 | 97 | # Microbundle cache 98 | .rpt2_cache/ 99 | .rts2_cache_cjs/ 100 | .rts2_cache_es/ 101 | .rts2_cache_umd/ 102 | 103 | # Optional REPL history 104 | .node_repl_history 105 | 106 | # Output of 'npm pack' 107 | *.tgz 108 | 109 | # Yarn Integrity file 110 | .yarn-integrity 111 | 112 | # dotenv environment variables file 113 | .env 114 | .env.test 115 | .env.production 116 | 117 | # parcel-bundler cache (https://parceljs.org/) 118 | .cache 119 | .parcel-cache 120 | 121 | # Next.js build output 122 | .next 123 | out 124 | 125 | # Nuxt.js build / generate output 126 | .nuxt 127 | dist 128 | 129 | # Gatsby files 130 | .cache/ 131 | # Comment in the public line in if your project uses Gatsby and not Next.js 132 | # https://nextjs.org/blog/next-9-1#public-directory-support 133 | # public 134 | 135 | # vuepress build output 136 | .vuepress/dist 137 | 138 | # Serverless directories 139 | .serverless/ 140 | 141 | # FuseBox cache 142 | .fusebox/ 143 | 144 | # DynamoDB Local files 145 | .dynamodb/ 146 | 147 | # TernJS port file 148 | .tern-port 149 | 150 | # Stores VSCode versions used for testing VSCode extensions 151 | .vscode-test 152 | 153 | # yarn v2 154 | .yarn/cache 155 | .yarn/unplugged 156 | .yarn/build-state.yml 157 | .yarn/install-state.gz 158 | .pnp.* 159 | 160 | # End of https://www.toptal.com/developers/gitignore/api/jekyll,node,macos --------------------------------------------------------------------------------