Initial commit
This commit is contained in:
commit
c01ea42f08
19
.gitea/workflows/publish.yml
Normal file
19
.gitea/workflows/publish.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
name: Gitea Actions Demo
|
||||||
|
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Explore-Gitea-Actions:
|
||||||
|
runs-on: volans
|
||||||
|
steps:
|
||||||
|
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
|
||||||
|
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
|
||||||
|
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
|
||||||
|
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
||||||
|
- name: List files in the repository
|
||||||
|
run: |
|
||||||
|
ls ${{ gitea.workspace }}
|
||||||
|
- run: echo "🍏 This job's status is ${{ job.status }}."
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.DS_Store
|
||||||
|
/static/processed_images
|
53
.gitlab-ci.yml
Normal file
53
.gitlab-ci.yml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
stages:
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
default:
|
||||||
|
image: debian:stable-slim
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# The runner will be able to pull your Zola theme when the strategy is
|
||||||
|
# set to "recursive".
|
||||||
|
GIT_SUBMODULE_STRATEGY: "recursive"
|
||||||
|
|
||||||
|
# If you don't set a version here, your site will be built with the latest
|
||||||
|
# version of Zola available in GitHub releases.
|
||||||
|
# Use the semver (x.y.z) format to specify a version. For example: "0.17.2" or "0.18.0".
|
||||||
|
ZOLA_VERSION:
|
||||||
|
description: "The version of Zola used to build the site."
|
||||||
|
value: ""
|
||||||
|
|
||||||
|
pages:
|
||||||
|
stage: deploy
|
||||||
|
script:
|
||||||
|
- |
|
||||||
|
apt-get update --assume-yes && apt-get install --assume-yes --no-install-recommends wget ca-certificates
|
||||||
|
if [ $ZOLA_VERSION ]; then
|
||||||
|
zola_url="https://github.com/getzola/zola/releases/download/v$ZOLA_VERSION/zola-v$ZOLA_VERSION-x86_64-unknown-linux-gnu.tar.gz"
|
||||||
|
if ! wget --quiet --spider $zola_url; then
|
||||||
|
echo "A Zola release with the specified version could not be found.";
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
github_api_url="https://api.github.com/repos/getzola/zola/releases/latest"
|
||||||
|
zola_url=$(
|
||||||
|
wget --output-document - $github_api_url |
|
||||||
|
grep "browser_download_url.*linux-gnu.tar.gz" |
|
||||||
|
cut --delimiter : --fields 2,3 |
|
||||||
|
tr --delete "\" "
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
wget $zola_url
|
||||||
|
tar -xzf *.tar.gz
|
||||||
|
./zola build
|
||||||
|
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
# This is the directory whose contents will be deployed to the GitLab Pages
|
||||||
|
# server.
|
||||||
|
# GitLab Pages expects a directory with this name by default.
|
||||||
|
- public
|
||||||
|
|
||||||
|
rules:
|
||||||
|
# This rule makes it so that your website is published and updated only when
|
||||||
|
# you push to the default branch of your repository (e.g. "master" or "main").
|
||||||
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "themes/duckquill"]
|
||||||
|
path = themes/duckquill
|
||||||
|
url = https://codeberg.org/daudix/duckquill.git
|
56
config.toml
Normal file
56
config.toml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
# Zola config
|
||||||
|
|
||||||
|
title = "Aparoksha"
|
||||||
|
base_url = "https://www.aparoksha.dev/"
|
||||||
|
description = "One app, fully native on every platform"
|
||||||
|
theme = "duckquill"
|
||||||
|
|
||||||
|
minify_html = true
|
||||||
|
default_language = "en"
|
||||||
|
compile_sass = true
|
||||||
|
author = "david-swift"
|
||||||
|
|
||||||
|
build_search_index = true
|
||||||
|
taxonomies = [{ name = "tags" }]
|
||||||
|
|
||||||
|
[markdown]
|
||||||
|
highlight_code = true
|
||||||
|
highlight_theme = "css"
|
||||||
|
smart_punctuation = true
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
stylesheets = [
|
||||||
|
"custom.css"
|
||||||
|
]
|
||||||
|
primary_color = "#FF2D75"
|
||||||
|
primary_color_alpha = "#FF005020"
|
||||||
|
primary_color_dark = "#FF2D75"
|
||||||
|
primary_color_dark_alpha = "#FF2D7520"
|
||||||
|
issues_url = "https://git.aparoksha.dev/david-swift/aparoksha.dev/issues"
|
||||||
|
source_url = "https://git.aparoksha.dev/david-swift/aparoksha.dev"
|
||||||
|
show_copy_button = true
|
||||||
|
|
||||||
|
[extra.footer]
|
||||||
|
show_copyright = true
|
||||||
|
show_powered_by = true
|
||||||
|
show_source = true
|
||||||
|
|
||||||
|
[extra.nav]
|
||||||
|
links = [
|
||||||
|
{ name = "Guides" , sublinks = [
|
||||||
|
{ url = "@/backends/_index.md", name = "Backends" },
|
||||||
|
{ url = "/tutorials", name = "Tutorials" },
|
||||||
|
{ url = "/hig", name = "Human Interface Guidelines" },
|
||||||
|
{ url = "/docs", name = "Documentation" },
|
||||||
|
]},
|
||||||
|
{ url = "https://forums.aparoksha.dev/", name = "Community" },
|
||||||
|
{ url = "https://git.aparoksha.dev/aparoksha", name = "Code" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[search]
|
||||||
|
index_format = "elasticlunr_json"
|
||||||
|
|
||||||
|
[extra.comments]
|
||||||
|
host = "mastodon.de"
|
||||||
|
user = "david_swift"
|
||||||
|
show_qr = true
|
90
content/_index.md
Normal file
90
content/_index.md
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
+++
|
||||||
|
+++
|
||||||
|
|
||||||
|
<!---
|
||||||
|
{{ image(url="trailer.gif" full_bleed=true) }}
|
||||||
|
--->
|
||||||
|
|
||||||
|
# Native. Cross-platform. <div class="logo"> Aparoksha. </div>
|
||||||
|
|
||||||
|
<div style="margin-bottom: 2em;">
|
||||||
|
Create your next cross-platform app with Aparoksha to give it a native look on each platform.
|
||||||
|
Aparoksha is easy-to-use, safe, and <i>aparoksha</i>, meaning that its reactive and declarative approach as well as the clean syntax significantly enhance the readability.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a class="inline-button" href="/tutorials/gettingstarted/">Get Started</a>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Start with Simple Views
|
||||||
|
|
||||||
|
A view is a piece of the user interface.
|
||||||
|
Create your own views, such as `Avatar`, `Post`, and `Timeline`.
|
||||||
|
Combine them into pages, windows, and apps.
|
||||||
|
|
||||||
|
<!---
|
||||||
|
<aside>
|
||||||
|
{{ image(url="trailer.gif" transparent=true) }}
|
||||||
|
</aside>
|
||||||
|
--->
|
||||||
|
|
||||||
|
{% crt() %}
|
||||||
|
```
|
||||||
|
struct Timeline: View {
|
||||||
|
|
||||||
|
var posts: Posts
|
||||||
|
|
||||||
|
var view: Body {
|
||||||
|
ForEach(posts) { post in
|
||||||
|
Avatar(user: post.user)
|
||||||
|
Post(post: post)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
{% end %}
|
||||||
|
|
||||||
|
## The Magic of the State
|
||||||
|
|
||||||
|
Each of your views has the ability to store state throughout view updates.
|
||||||
|
Let's create a simple counter view:
|
||||||
|
|
||||||
|
<!---
|
||||||
|
<aside>
|
||||||
|
{{ image(url="trailer.gif" transparent=true) }}
|
||||||
|
</aside>
|
||||||
|
--->
|
||||||
|
|
||||||
|
{% crt() %}
|
||||||
|
```
|
||||||
|
struct SearchView: View {
|
||||||
|
|
||||||
|
@State private var count = 0
|
||||||
|
|
||||||
|
var view: Body {
|
||||||
|
Button(icon: .minus) {
|
||||||
|
count -= 1
|
||||||
|
}
|
||||||
|
Text("\(count)")
|
||||||
|
Button(icon: .plus) {
|
||||||
|
count += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
{% end %}
|
||||||
|
|
||||||
|
## Supported Platforms
|
||||||
|
|
||||||
|
Aparoksha's goal is to enable you to bring your app to as many users as possible on completely different platforms.
|
||||||
|
Therefore, it is built in an open and extensible way.
|
||||||
|
Creating a backend for a new platform is almost as simple as creating an app!
|
||||||
|
|
||||||
|
A list of some backends is available [here](@/backends/_index.md). They can be combined with Aparoksha in a simple way.
|
||||||
|
Aparoksha itself currently supports the three major desktop platforms [GNOME](@/backends/Adwaita/index.md), [Windows](@/backends/WinUI/index.md), and [macOS](@/backends/AppKit/index.md).
|
||||||
|
What makes the Aparoksha project unique is that each backend is a fully independent project, optimized for its platform.
|
||||||
|
In a cross-platform app, you can leverage the full potential of the individual backends by writing platform-specific bits of code.
|
BIN
content/backends/Adwaita/Adwaita.png
Normal file
BIN
content/backends/Adwaita/Adwaita.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 674 KiB |
BIN
content/backends/Adwaita/App.png
Normal file
BIN
content/backends/Adwaita/App.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 237 KiB |
BIN
content/backends/Adwaita/Environment.png
Normal file
BIN
content/backends/Adwaita/Environment.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 MiB |
52
content/backends/Adwaita/index.md
Normal file
52
content/backends/Adwaita/index.md
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
+++
|
||||||
|
title = "Adwaita"
|
||||||
|
description = "Develop beautiful apps following the design guidelines of the GNOME desktop."
|
||||||
|
date = 2023-09-12
|
||||||
|
[taxonomies]
|
||||||
|
tags = ["Linux", "Aparoksha"]
|
||||||
|
[extra]
|
||||||
|
featured = true
|
||||||
|
banner = "Adwaita.png"
|
||||||
|
+++
|
||||||
|
|
||||||
|
Develop beautiful apps following the design guidelines of the GNOME desktop.
|
||||||
|
|
||||||
|
Read the <a class="external" href="https://aparokshaui.github.io/adwaita-swift">documentation</a> to get started or <a class="external" href="https://github.com/AparokshaUI/adwaita-swift">browse the code</a> on GitHub.
|
||||||
|
|
||||||
|
## The Backend
|
||||||
|
|
||||||
|
The Adwaita backend is based on the <a class="external" href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/">_libadwaita_</a> C API.
|
||||||
|
libadwaita is used for developing native GNOME apps.
|
||||||
|
|
||||||
|
## The Development Environment
|
||||||
|
|
||||||
|
It is recommended to develop Libadwaita apps on a Linux system.
|
||||||
|
Linux is probably available for your device and can be installed alongside Windows or macOS.
|
||||||
|
I recommend picking a Linux distribution offering a vanilla GNOME experience, such as <a class="external" href="https://fedoraproject.org/de/">Fedora</a> or <a class="external" href="https://vanillaos.org/">VanillaOS</a>.
|
||||||
|
|
||||||
|
Now, install <a class="external" href="https://apps.gnome.org/en/Builder/">GNOME Builder</a> via the GNOME Software application.
|
||||||
|
|
||||||
|
### Flatpak
|
||||||
|
|
||||||
|
<a class="external" href="https://flatpak.org/">Flatpak</a> facilitates the distribution of apps on Linux.
|
||||||
|
If you decide to use Flatpak already when developing the app, you do not have to install any dependencies on your system.
|
||||||
|
Simply clone the <a class="external" href="https://github.com/AparokshaUI/AdwaitaTemplate">template repository</a>, open in GNOME Builder, and run the template app.
|
||||||
|
Follow the instructions in the readme file to create your own app.
|
||||||
|
|
||||||
|
{{ image(url="Environment.png", alt="A native GNOME app called Tuba") }}
|
||||||
|
|
||||||
|
## The Design
|
||||||
|
|
||||||
|
This backend allows the creation of apps following the <a class="external" href="https://developer.gnome.org/hig/">GNOME Human Interface Guidelines</a>.
|
||||||
|
The following screenshot serves as an example for GNOME's design language.
|
||||||
|
|
||||||
|
{{ image(url="App.png", alt="A native GNOME app called Tuba" transparent=true) }}
|
||||||
|
|
||||||
|
## Distribution
|
||||||
|
|
||||||
|
The apps can be distributed using Flatpak. The most popular app store is <a class="external" href="https://flathub.org">Flathub</a>.
|
||||||
|
Read the <a class="external" href="https://aparokshaui.github.io/adwaita-swift/documentation/adwaita/publishingapps">instructions in the official docs</a>.
|
||||||
|
|
||||||
|
## Aparoksha Interoperability
|
||||||
|
This backend is part of the Aparoksha package. If you use default Aparoksha elements, they will render correctly on GNOME.
|
||||||
|
You can call platform-specific widgets for GNOME as well.
|
11
content/backends/AppKit/index.md
Normal file
11
content/backends/AppKit/index.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
+++
|
||||||
|
title = "AppKit"
|
||||||
|
description = "Build fully native macOS apps."
|
||||||
|
date = 2024-09-13
|
||||||
|
[taxonomies]
|
||||||
|
tags = ["macOS", "Aparoksha"]
|
||||||
|
[extra]
|
||||||
|
featured = true
|
||||||
|
+++
|
||||||
|
|
||||||
|
Hello
|
12
content/backends/TermKit/index.md
Normal file
12
content/backends/TermKit/index.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
+++
|
||||||
|
title = "TermKit"
|
||||||
|
description = "Create simple user interfaces for terminal applications."
|
||||||
|
date = 2024-07-10
|
||||||
|
authors = ["david-swift"]
|
||||||
|
[taxonomies]
|
||||||
|
tags = ["Linux", "macOS"]
|
||||||
|
[extra]
|
||||||
|
hot = false
|
||||||
|
+++
|
||||||
|
|
||||||
|
Hello
|
11
content/backends/WinUI/index.md
Normal file
11
content/backends/WinUI/index.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
+++
|
||||||
|
title = "WinUI"
|
||||||
|
description = "Create apps for Microsoft Windows."
|
||||||
|
date = 2024-09-13
|
||||||
|
[taxonomies]
|
||||||
|
tags = ["Windows", "Aparoksha"]
|
||||||
|
[extra]
|
||||||
|
featured = true
|
||||||
|
+++
|
||||||
|
|
||||||
|
Hello
|
12
content/backends/_index.md
Normal file
12
content/backends/_index.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
+++
|
||||||
|
title = "Available Backends"
|
||||||
|
sort_by = "date"
|
||||||
|
template = "article_list.html"
|
||||||
|
page_template = "article.html"
|
||||||
|
+++
|
||||||
|
|
||||||
|
The backends listed here are based on the <a class="external" href="https://github.com/AparokshaUI/Meta">Meta package</a>.
|
||||||
|
They can be used in combination with the Aparoksha package.
|
||||||
|
|
||||||
|
The backends marked with a star are part of the Aparoksha package.
|
||||||
|
This means that all the user interface elements included in the Aparoksha package will automatically render correctly with these backends.
|
14
content/david/index.md
Normal file
14
content/david/index.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
+++
|
||||||
|
title = "Hi!"
|
||||||
|
template = "article.html"
|
||||||
|
+++
|
||||||
|
|
||||||
|
I'm David, the maintainer of the Aparoksha project.
|
||||||
|
You can find me on <a class="external" href="https://mastodon.de/@david_swift">Mastodon</a>,
|
||||||
|
<a class="external" href="https://git.aparoksha.dev/david-swift/">this project's Gitea instance</a>,
|
||||||
|
and on <a class="external" href="https://github.com/david-swift">GitHub</a>.
|
||||||
|
|
||||||
|
If you benefit from this project and have enough money, <a class="external" href="https://ko-fi.com/david_swift">donations</a> are appreciated to compensate the server costs.
|
||||||
|
Thank you!
|
||||||
|
|
||||||
|
Don't forget to share your projects on the Fediverse and in the <a class="external" href="https://forums.aparoksha.dev/t/projects">Aparoksha forums</a> :)
|
7
content/docs/index.md
Normal file
7
content/docs/index.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
+++
|
||||||
|
title = "Documentation"
|
||||||
|
template = "article.html"
|
||||||
|
featured = true
|
||||||
|
[taxonomies]
|
||||||
|
tags = ["Linux", "macOS", "Windows", "Aparoksha"]
|
||||||
|
+++
|
7
content/hig/index.md
Normal file
7
content/hig/index.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
+++
|
||||||
|
title = "Human Interface Guidelines"
|
||||||
|
template = "article.html"
|
||||||
|
featured = true
|
||||||
|
[taxonomies]
|
||||||
|
tags = ["Linux", "macOS", "Windows", "Aparoksha"]
|
||||||
|
+++
|
BIN
content/trailer.gif
Normal file
BIN
content/trailer.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 106 KiB |
7
content/tutorials/GettingStarted/index.md
Normal file
7
content/tutorials/GettingStarted/index.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
+++
|
||||||
|
title = "Getting Started"
|
||||||
|
description = "Learn Aparoksha following a simple path."
|
||||||
|
date = 2023-09-12
|
||||||
|
[taxonomies]
|
||||||
|
tags = ["Linux", "macOS", "Windows", "Aparoksha"]
|
||||||
|
+++
|
6
content/tutorials/_index.md
Normal file
6
content/tutorials/_index.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
+++
|
||||||
|
title = "Tutorials"
|
||||||
|
sort_by = "date"
|
||||||
|
template = "article_list.html"
|
||||||
|
page_template = "article.html"
|
||||||
|
+++
|
38
sass/custom.scss
Normal file
38
sass/custom.scss
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: var(--font-system-ui)
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
font-size: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
color: #EE2D75;
|
||||||
|
}
|
BIN
static/favicon.png
Normal file
BIN
static/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 169 KiB |
1
themes/duckquill
Submodule
1
themes/duckquill
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c8218246359680c124661ef905e04313a97ea703
|
Loading…
Reference in New Issue
Block a user