Skip to content

Commit 59bacba

Browse files
committed
Fix anchors
1 parent 0dab418 commit 59bacba

File tree

1 file changed

+54
-116
lines changed

1 file changed

+54
-116
lines changed

src/content/docs/docs/index.md

Lines changed: 54 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -5,116 +5,91 @@ title: Creator Guide
55
---
66

77
# App Fair Creator Guide
8-
{:.no_toc}
9-
10-
## A Universal App Marketplace
11-
{:.no_toc style="text-align: center;"}
128

139
<img style="width: 100%;" alt="App Fair Project Diagram" src="/images/appfair-project.svg" />
1410

15-
* Table of contents
16-
{:toc}
17-
18-
## Introduction
19-
{: #introduction}
11+
## Introduction {#introduction}
2012

2113
Welcome, Developer! This guide will provide an overview of the App Fair development, release, and maintenance process. If you are already a mobile app developer, some of these sections will be review – but we encourage to read thoroughly regardless. The App Fair is a unique method of app development, and even if you have already shipped apps for the iPhone or Android (or both), many of the concepts presented here will be novel.
2214

2315
The document is currently a **draft** of the creator guide. Many sections are still works in progress. Please post questions and feedback on the [App Fair discussion forums](https://github.com/orgs/appfair/discussions).
2416
{: class="callout error"}
2517

26-
### About the App Fair Project
27-
{: #about-app-fair}
18+
### About the App Fair Project {#about-app-fair}
2819

2920
The App Fair is a nexus for mobile app developers to bring their creations into the hands billions of mobile device users around the world: all devices, all languages, all abilities. Apps developed for the App Fair are trustworthy because they are 100% free and open-source. This guarantees that there is no native advertising, hidden surveillance, surreptitious tracking, or privacy-violating analytics technologies embedded within the applications. The App Fair build and release process acts as a "seal of approval" for apps to indicate that they are honest and trustworthy.
3021

31-
#### Why develop an app for the App Fair?
32-
{: #why-app-fair}
22+
#### Why develop an app for the App Fair? #why-app-fair}
3323

3424
Creating an app for the App Fair is an opportunity to get your creation in the hands of billions of people around the world, regardless of their device, language, or ability level.
3525

36-
#### Who can create an app for the App Fair?
37-
{: #who-app-fair}
26+
#### Who can create an app for the App Fair? #who-app-fair}
3827

3928
Anyone with the ability and desire to build an app can be an App Fair Creator. You do not need any paid developer account with Apple or Google, only a free GitHub account. If you have a macOS development machine and the ability (or desire) to build an app in SwiftUI, you can create an app and – through the App Fair process – distribute your creation to the world.
4029

41-
#### What sorts of apps can I build for the App Fair?
42-
{: #what-app-fair}
30+
#### What sorts of apps can I build for the App Fair? #what-app-fair}
4331

4432
The App Fair is looking for _generally useful_ applications. This means that your app should be interesting and useful to a wide swath of humanity, irrespective of language or location. They should also be timeless: apps should not have any specific cutoff for their utility.
4533

4634
A central tenant of the App Fair catalog is that apps do not seek to monetize the attention of the user. This means that they can contains no native advertising or tracking SDKs. They must also be _transparent_, and so they must be built from 100% free and open source software. This is the guarantee that users (and external auditors) will have that they know exactly what went into the creation of the app.
4735

48-
### About distribution channels
49-
{: #app-fair-channels}
36+
### About distribution channels {#app-fair-channels}
5037

5138
The App Fair aims to distribute apps *worldwide*, so all of the mobile-device-using population (90% of the adult population, by most estimates) can benefit from your creation.
5239

53-
#### The App Fair
54-
{: #app-fair-channel-app-fair}
40+
#### The App Fair {#app-fair-channel-app-fair}
5541

5642
The App Fair app is a dual-platform iOS/Android app that can browse, download, install, and update apps from the App Fair catalog. It is available worldwide for Android, and (soon) will be available in the European Union for iOS. The App Fair app is the primary channel for distributing app fair apps.
5743

58-
#### The Apple App Store
59-
{: #app-fair-channel-app-store}
44+
#### The Apple App Store {#app-fair-channel-app-store}
6045

6146
The Apple App Store (AAS) is the primary 1st-party app store for Apple devices such as the iPhone and iPad. The AAS is pre-installed on all Apple devices sort worldwide, and is generally the first place that most users will go to discover and download applications for their phone or table.
6247

63-
#### The Google Play Store
64-
{: #app-fair-channel-play-store}
48+
#### The Google Play Store {#app-fair-channel-play-store}
6549

6650
The Google Play Store (GPS) is the primary 1st-party app store for most Android devices, such as the Google Pixel and Samsung Galaxy phones. The GPS is available and pre-installed in most devices worldwide (barring China), and is typically one of the first places that Android users will go to install apps on their Android devices.
6751

6852
<!--
6953
70-
#### AltStore
71-
{: #app-fair-channel-altstore}
54+
#### AltStore {#app-fair-channel-altstore}
7255
73-
#### F-Droid
74-
{: #app-fair-channel-fdroid}
56+
#### F-Droid {#app-fair-channel-fdroid}
7557
7658
-->
7759

78-
## Getting Started
79-
{: #getting-started}
60+
## Getting Started {#getting-started}
8061

81-
### Before you start
82-
{: #before-starting}
62+
### Before you start {#before-starting}
8363

8464
Before you dive into developing your app, you should first check whether the app idea already exists as an App Fair project. The App Fair generally discourages apps with identical intent. Unlike commercial app catalogs that aim to build quantity, the App Fair aims to feature a few best-in-class applications in their categories. You can browse the list of app projects at [appfair/repositories](https://github.com/orgs/appfair/repositories) to see if an app already exists that closely resembles your idea for a contribution. If so, you may with to instead contribute toward the improvement of that app project rather than duplicating effort.
8565

86-
### System Requirements
87-
{: #sysreq}
66+
### System Requirements {#sysreq}
8867

8968
In order to develop an app for the App Fair, you need to have a macOS development machine capable of running the latest Xcode IDE. App Fair apps are developed with [Skip](https://skip.dev), which enables the development of iOS and Android apps from a single SwiftUI codebase, and Skip requires Xcode.
9069

91-
#### Choose a unique name
92-
{: #naming}
70+
#### Choose a unique name {#naming}
9371

9472
Your app needs to have a distinctive and unique name that is not the name of any other app in the App Fair, Apple App Store, or Google Play Store.
9573

9674
It can be difficult to conclusively verify ahead of time that a name is available because there are many "name-squatters" on the commercial app stores. Don't get too attached to your original idea, unless you are somehow quite certain that it is totally unique. It is easy to change the name of an app before publication, so our advice is to not spend too much time picking a name up front, since you might need to change it later anyway.
9775
{: class="callout error"}
9876

99-
### Make a proposal
100-
{: #proposal}
77+
### Make a proposal {#proposal}
10178

10279
When you have an idea for an app, you may want to propose it on the [App Fair discussion forums](https://github.com/orgs/appfair/discussions). This will give the community the opportunity to provide feedback on the idea, as well as make an assessment about whether the app will be suitable for distribution through the Ap Fair.
10380

10481
Creating a proposal is optional, but it is a good way to get community feedback on your idea before you invest effort in building something that might not fit well with the App Fair's mission or needs.
10582
{: class="callout warning"}
10683

107-
### Creating an organization and repository
108-
{: #new-org-repo}
84+
### Creating an organization and repository {#new-org-repo}
10985

11086
Every App Fair app must be represented by a unique GitHub organization. An organization can be created for free by going to [https://github.com/account/organizations/new?plan=free](https://github.com/account/organizations/new?plan=free). It can be created an managed by an individual, or many people can be invited to participate in the app's development.
11187

11288
The organization's name should be the application ID, which will typically be the app's name. For example, for the "App Name" app, and organization named "App-Name" should be created.
11389

11490
Once the organization is made, the app's repository should be created by going to [https://github.com/new](https://github.com/new). The repository name must exactly match the organization name (e.g., "https://github.com/App-Name/App-Name"). The repository should be public and empty (no README, .gitignore, or license files). The contents will be added in the next steps.
11591

116-
### Initializing the app
117-
{: #init-app}
92+
### Initializing the app {#init-app}
11893

11994
App Fair apps are developed using [Skip](https://skip.dev), which is the technology that enables the creation of a dual-platform iOS+Android app from a single Swift codebase. Follow the [Getting Started](https://skip.dev/docs/gettingstarted/) instructions for setting up Skip on your machine, except then it comes to the creation of the app, the following command should be used instead (substituting "App-Name" with the name of the repository you just created):
12095

@@ -140,185 +115,148 @@ In addition to creating the repository, the app is also set up with a GitHub con
140115
{: class="callout warning"}
141116

142117

143-
## Developing
144-
{: #developing}
118+
## Developing {#developing}
145119

146-
### App development guidelines
147-
{: #app-guidelines}
120+
### App development guidelines {#app-guidelines}
148121

149122
By now you already know the fundamental requirements of an App Fair app: they must consist of 100% free and open-source software, and they must respect the privacy of the user by not embedding any tracking, surveillance, or advertising tech.
150123

151124
There are a number of other guidelines that App Fair apps should also strive to follow:
152125

153-
#### Respect offline mode
154-
{: #guideline-offline}
126+
#### Respect offline mode {#guideline-offline}
155127

156128
Apps should work in a variety of network conditions: fast wi-fi as well as slow and metered cellular. It should generally be possible to continue to use the app in an "offline" mode.
157129

158-
#### Be fast to launch and efficient with memory and battery
159-
{: #guideline-fast}
130+
#### Be fast to launch and efficient with memory and battery {#guideline-fast}
160131

161132
_writing in progress…_
162133

163-
#### Provide in-app guidance
164-
{: #guideline-guidance}
134+
#### Provide in-app guidance {#guideline-guidance}
165135

166136
_writing in progress…_
167137

168-
#### Facilitate easy translation
169-
{: #guideline-translations}
138+
#### Facilitate easy translation {#guideline-translations}
170139

171140
_writing in progress…_
172141

173-
### The app development cycle
174-
{: #appdev}
142+
### The app development cycle {#appdev}
175143

176144
_writing in progress…_
177145

178-
## Releasing
179-
{: #releasing}
146+
## Releasing {#releasing}
180147

181148
_writing in progress…_
182149

183-
### About the App Fair release process
184-
{: #app-fair-releases}
150+
### About the App Fair release process {#app-fair-releases}
185151

186152
_writing in progress…_
187153

188154
<!-- When it is time to release your app and submit it to the various distribution channels, -->
189155

190-
### Managing metadata
191-
{: #metadata}
156+
### Managing metadata {#metadata}
192157

193158
_writing in progress…_
194159

195-
#### About Fastlane
196-
{: #metadata-fastlane}
160+
#### About Fastlane {#metadata-fastlane}
197161

198162
_writing in progress…_
199163

200-
#### Android metadata
201-
{: #metadata-fastlane-android}
164+
#### Android metadata {#metadata-fastlane-android}
202165

203166
_writing in progress…_
204167

205-
##### Android screenshots
206-
{: #metadata-fastlane-android-screenshots}
168+
##### Android screenshots {#metadata-fastlane-android-screenshots}
207169

208170
_writing in progress…_
209171

210-
#### iOS metadata
211-
{: #metadata-fastlane-ios}
172+
#### iOS metadata {#metadata-fastlane-ios}
212173

213174
_writing in progress…_
214175

215-
##### iOS screenshots
216-
{: #metadata-fastlane-ios-screenshots}
176+
##### iOS screenshots {#metadata-fastlane-ios-screenshots}
217177

218178
_writing in progress…_
219179

220-
### Creating a tag
221-
{: #release-tag}
180+
### Creating a tag {#release-tag}
222181

223182
_writing in progress…_
224183

225-
### Fork requests
226-
{: #fork-request}
184+
### Fork requests {#fork-request}
227185

228186
_writing in progress…_
229187

230188
<!-- A.F.F.R. -->
231189

232-
### Handling feedback
233-
{: #handling-feedback}
190+
### Handling feedback {#handling-feedback}
234191

235192
_writing in progress…_
236193

237-
## Maintenance
238-
{: #app-maintenance}
194+
## Maintenance {#app-maintenance}
239195

240196
_writing in progress…_
241197

242-
### Releasing updates
243-
{: #app-updates}
198+
### Releasing updates {#app-updates}
244199

245200
_writing in progress…_
246201

247-
### Managing localization and translations
248-
{: #app-localization}
202+
### Managing localization and translations {#app-localization}
249203

250204
_writing in progress…_
251205

252206

253207
## FAQ
254208

255-
### What software licenses can be used with the App Fair
256-
{: #faq-license}
209+
### What software licenses can be used with the App Fair {#faq-license}
257210

258211
The top-level app project must be made available under the GNU General Public License (GPL) version 3 in order to qualify to be distributed through the App Fair. The app can have dependencies on libraries that are available under any of the GPL-compatible OSI-approved licenses, such as the Apache, BSD, and MIT licenses.
259212

260-
### Why Skip instead of Flutter/React Native/Xamarin/MAUI/etc?
261-
{: #faq-skip-xp}
213+
### Why Skip instead of Flutter/React Native/Xamarin/MAUI/etc? {#faq-skip-xp}
262214

263215
Platform-native user interfaces provide a premium app experience, optimal performance and superior battery life. Skip facilitates the creation of apps using each platform's vendor-recommended design language: Swift and SwiftUI for iOS, and Kotlin and Jetpack Compose for Android.
264216

265-
### Can I develop an app that only supports Android or iOS?
266-
{: #faq-xor}
217+
### Can I develop an app that only supports Android or iOS? {#faq-xor}
267218

268219
No, distributing an app through the App Fair requires that it support both iOS and Android. There may be different features that are enabled for different platforms as a consequence of each platform's unique feature-set, but in general the app should aim to provide the same experience on both of the major mobile operating systems.
269220

270-
### Can I build an App Fair app for macOS/Windows/Linux?
271-
{: #faq-desktop}
221+
### Can I build an App Fair app for macOS/Windows/Linux? {#faq-desktop}
272222

273223
No. App Fair apps are squarely focused on native mobile devices.
274224

275-
### Can I build an App Fair app for the web?
276-
{: #faq-web}
225+
### Can I build an App Fair app for the web? {#faq-web}
277226

278227
No. App Fair apps are squarely focused on native mobile devices.
279228

280-
### Can I develop an App Fair app on Linux or Windows?
281-
{: #faq-dev-lin-win}
229+
### Can I develop an App Fair app on Linux or Windows? {#faq-dev-lin-win}
282230

283231
Not at this time. Even though Android apps can be developed on any of macOS, Linux, or Windows, building and testing iOS apps requires Xcode and the tools that come with it (i.e., the iOS Simulator), which requires macOS.
284232

285-
### What are the minimum system requirements for running App Fair apps
286-
{: #faq-sysreq}
233+
### What are the minimum system requirements for running App Fair apps {#faq-sysreq}
287234

288235
In order to install and run an App Fair App, a device must be running either iOS 17 or Android 10 (or higher). Individual apps may add higher system requirements, but it is generally not recommended in order to reach the widest possible audience.
289236

290-
### Can an app have different features for different distribution channels?
291-
{: #faq-heterogeneous-features}
237+
### Can an app have different features for different distribution channels? {#faq-heterogeneous-features}
292238

293239
Yes. An app can check at runtime whether it has been installed from the App Fair versus one of the commercial app stores, and choose the enable or disable features accordingly.
294240

295-
### How can I remove my app from one of the the App Fair distribution channels?
296-
{: #faq-leave-distribution-channel}
241+
### How can I remove my app from one of the the App Fair distribution channels? {#faq-leave-distribution-channel}
297242

298-
### Can I leave the App Fair completely and distribute my app independently?
299-
{: #faq-leave-app-fair}
243+
### Can I leave the App Fair completely and distribute my app independently? {#faq-leave-app-fair}
300244

301-
### Why does fairapps need write access to my project?
302-
{: #faq-write-access}
245+
### Why does fairapps need write access to my project? {#faq-write-access}
303246

304247
The App Fair build process builds and signs your apps, but the actual binaries are still distributed through your own repository. As such, the App Fair needs the ability to add files to your app repository's releases, which requires write access to your repository.
305248

306-
### Can I build my own app binary instead of having the App Fair do it?
307-
{: #faq-trusted-builds}
249+
### Can I build my own app binary instead of having the App Fair do it? {#faq-trusted-builds}
308250

309251
Yes. When you tag your repository with a semantic version, your app is automatically built and binaries for iOS (.ipa) and Android (.apk and .adb) are uploaded to the repository's releases page. These will be *unsigned* binaries, and so you will need to manage the signing process yourself if you aim to release the app through other channels.
310252

311-
### What if I can no longer maintain my app?
312-
{: #faq-maintenance-exit}
253+
### What if I can no longer maintain my app? {#faq-maintenance-exit}
313254

314255
You can post a Call for Maintenance (CFM) on the App Fair discussion forums, and then if there is interest, you will arrange to hand over future development to a new individual or group. This is one of the reasons why App Fair apps require that each app is hosted in its own dedicated organization: it facilitates the ability for app development and maintenance to be handed off to another party in the even that the original developer(s) can no longer maintain it.
315256

316-
### I am not a developer, but I would like to translate an app into another language. How can I help?
317-
{: #faq-translators}
257+
### I am not a developer, but I would like to translate an app into another language. How can I help? {#faq-translators}
318258

319259
_writing in progress…_
320260

321-
### I am not a developer. How else can I help the App Fair Project?
322-
{: #faq-other-contributions}
323-
261+
### I am not a developer. How else can I help the App Fair Project? {#faq-other-contributions}
324262
The App Fair Project is run solely on donations from users like you. Please consider making a contribution to the ongoing development and hosting fees by going to [appfair.org/donate/](https://appfair.org/donate/).

0 commit comments

Comments
 (0)