update about text and elevate about button
This commit is contained in:
@@ -10,50 +10,16 @@ import win.tap_tap.papertrader.components.LanguageSelect
|
|||||||
|
|
||||||
fun Texts.getAbout(): String {
|
fun Texts.getAbout(): String {
|
||||||
return when (selectedLanguage()) {
|
return when (selectedLanguage()) {
|
||||||
// Languages.ENGLISH -> """
|
Languages.ENGLISH ->
|
||||||
//#### The Vision
|
"""
|
||||||
//
|
|
||||||
//This paper trading platform was designed to bridge the gap between "responsible investing" and the fun of the market without the actual risk of losing capital.
|
|
||||||
//To do that you can compete against your friends in Challenges, to see who can generate the highest return with a given cash on the markets.
|
|
||||||
//The app supports Android, Web (via WebAssembly and JS) and Desktop.
|
|
||||||
//
|
|
||||||
//#### Motivation
|
|
||||||
//
|
|
||||||
// I am Theo Tappe, currently studying informatics and wanted to learn KMP and having some fun with friends using the app.
|
|
||||||
//
|
|
||||||
//#### Technologies Used
|
|
||||||
//
|
|
||||||
//- **Kotlin Multiplatform (KMP)**: an open-source technology that allows you to use a single codebase for all supported platforms including the server while still running natively
|
|
||||||
//- **K3S (Kubernetes)**: lightweight Kubernetes distribution for managing the docker server
|
|
||||||
//- **AlpacaAPI**: an trading API where the server gets all the stock data from
|
|
||||||
//- **Ktor**: asynchronous framework for datatransfer between server and client
|
|
||||||
//- **NixOS**: the operating system K3S runs on which is defined declaratively and therefore reproducable and reliable
|
|
||||||
//- **Proxmox**: type 1 hypervisor that allows to run multiple services on my personal server
|
|
||||||
//- **SqlDelight**: typsafe API to interact with a sqlight database
|
|
||||||
//
|
|
||||||
//#### Roll of Technologies
|
|
||||||
//
|
|
||||||
//- **KMP**:
|
|
||||||
// - Native Performance: KMP compiles to native binaries ensuring that the app stays responsive.
|
|
||||||
// - Shared Code: All of the frontend code is shared between the supportet platforms, so that the project can be implemented by a single developer.
|
|
||||||
// - Shared Data: All Data-Transfer-Objects are shared between the frontend and backend which reduces bugs.
|
|
||||||
//- **Server Managing**:
|
|
||||||
// - **Proxmox**: has multple virtual maschines and one runs NixOS with Kubernetes
|
|
||||||
// - **NixOS**: Operating System of the kubernetes (single-node) cluster, with high maintalibility and ... in mind
|
|
||||||
// - **K3S**: Manages multliple servers with this backend, nextcloud and vaultwarden among other things
|
|
||||||
//- **Backend**:
|
|
||||||
// - **Ktor**: handles all the network traffic and data serialisation
|
|
||||||
// - **SqlDelight**: Typesafe API which is used to store all data
|
|
||||||
//- **Frontend / KMP**:
|
|
||||||
// - **Jetpack Compose**: UI implementation which is shared accross all supportet
|
|
||||||
//"""
|
|
||||||
|
|
||||||
Languages.ENGLISH -> """
|
|
||||||
#### Motivation
|
#### Motivation
|
||||||
|
|
||||||
This application was developed by Theo Tappe as a comprehensive technical showcase for my application and to have some fun with friends.
|
This application was developed by Theo Tappe as a comprehensive technical showcase for my application and to have some fun with friends.
|
||||||
It demonstrates a full-stack approach, combining cross-platform development with a robust, automated infrastructure.
|
It demonstrates a full-stack approach, combining cross-platform development with a robust, automated infrastructure.
|
||||||
|
|
||||||
|
#### Links
|
||||||
|
|
||||||
|
All code can be found on my gitlab instance: https://gitlab.tap-tap.win/root/taptappapertrader
|
||||||
|
|
||||||
#### Frontend Architecture
|
#### Frontend Architecture
|
||||||
|
|
||||||
@@ -102,13 +68,17 @@ This minimizes "it works on my machine" issues and ensures a stable production e
|
|||||||
The entire stack is hosted on a Proxmox VE cluster.
|
The entire stack is hosted on a Proxmox VE cluster.
|
||||||
This allows me to manage an internal network including TrueNAS for storage, OPNsense for networking and NixOS for deploying.
|
This allows me to manage an internal network including TrueNAS for storage, OPNsense for networking and NixOS for deploying.
|
||||||
"""
|
"""
|
||||||
|
Languages.GERMAN ->
|
||||||
Languages.GERMAN -> """
|
"""
|
||||||
#### Motivation
|
#### Motivation
|
||||||
|
|
||||||
Diese Anwendung wurde von Theo Tappe als umfassendes technisches Showcase für meine Bewerbung sowie als Freizeitprojekt für Freunde entwickelt.
|
Diese Anwendung wurde von Theo Tappe als umfassendes technisches Showcase für meine Bewerbung sowie als Freizeitprojekt für Freunde entwickelt.
|
||||||
Sie demonstriert einen Full-Stack-Ansatz, der moderne plattformübergreifende Entwicklung mit einer robusten, automatisierten Infrastruktur kombiniert.
|
Sie demonstriert einen Full-Stack-Ansatz, der moderne plattformübergreifende Entwicklung mit einer robusten, automatisierten Infrastruktur kombiniert.
|
||||||
|
|
||||||
|
#### Links
|
||||||
|
|
||||||
|
Der gesamt Code kann auf meiner Gitlab Instanz und kann hier gefunden werden: https://gitlab.tap-tap.win/root/taptappapertrader
|
||||||
|
|
||||||
#### Frontend-Architektur
|
#### Frontend-Architektur
|
||||||
|
|
||||||
- **Native Performance via KMP**:
|
- **Native Performance via KMP**:
|
||||||
@@ -162,4 +132,4 @@ fun About() {
|
|||||||
LanguageSelect()
|
LanguageSelect()
|
||||||
ButtonSpacer()
|
ButtonSpacer()
|
||||||
Markdown(texts.getAbout())
|
Markdown(texts.getAbout())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,16 +6,14 @@ import androidx.compose.foundation.verticalScroll
|
|||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.rounded.ChevronLeft
|
import androidx.compose.material.icons.rounded.ChevronLeft
|
||||||
import androidx.compose.material.icons.rounded.Refresh
|
import androidx.compose.material.icons.rounded.Refresh
|
||||||
import androidx.compose.material3.FilledIconButton
|
import androidx.compose.material3.*
|
||||||
import androidx.compose.material3.Icon
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.material3.Text
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import io.ktor.util.reflect.*
|
import io.ktor.util.reflect.*
|
||||||
import win.tap_tap.papertrader.LocalBackStack
|
import win.tap_tap.papertrader.LocalBackStack
|
||||||
|
import win.tap_tap.papertrader.components.AppText
|
||||||
import win.tap_tap.papertrader.components.AppTextLink
|
import win.tap_tap.papertrader.components.AppTextLink
|
||||||
import win.tap_tap.papertrader.components.ButtonSpacer
|
import win.tap_tap.papertrader.components.ButtonSpacer
|
||||||
import win.tap_tap.papertrader.routes.Routes
|
import win.tap_tap.papertrader.routes.Routes
|
||||||
@@ -77,10 +75,12 @@ fun Page(
|
|||||||
ButtonSpacer()
|
ButtonSpacer()
|
||||||
}
|
}
|
||||||
if (!curNavKey.instanceOf(Routes.About::class)) {
|
if (!curNavKey.instanceOf(Routes.About::class)) {
|
||||||
AppTextLink("About", onClick = {
|
ElevatedButton(onClick = {
|
||||||
backStack.add(Routes.About)
|
backStack.add(Routes.About)
|
||||||
viewModel?.reset()
|
viewModel?.reset()
|
||||||
})
|
}) {
|
||||||
|
AppText("About")
|
||||||
|
}
|
||||||
ButtonSpacer()
|
ButtonSpacer()
|
||||||
}
|
}
|
||||||
if (!curNavKey.instanceOf(Routes.PrivacyPolicy::class)) {
|
if (!curNavKey.instanceOf(Routes.PrivacyPolicy::class)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user