Landing page and UI text improvements, list 3rd-party library licenses
This commit is contained in:
parent
250a126acd
commit
2dac197cb9
@ -4,7 +4,9 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-scripts start",
|
"start": "react-scripts start",
|
||||||
"build": "react-scripts build",
|
"build": "yarn build:page && yarn build:licenses",
|
||||||
|
"build:page": "react-scripts build",
|
||||||
|
"build:licenses": "yarn licenses generate-disclaimer --production > build/static/js/full-license-manifest.txt",
|
||||||
"test": "react-scripts test",
|
"test": "react-scripts test",
|
||||||
"eject": "react-scripts eject",
|
"eject": "react-scripts eject",
|
||||||
"prettify": "prettier --write src/",
|
"prettify": "prettier --write src/",
|
||||||
|
@ -7,6 +7,7 @@ export enum AppPath {
|
|||||||
ExpressionSetsPractice = "expression-sets/practice",
|
ExpressionSetsPractice = "expression-sets/practice",
|
||||||
ExpressionSetsDetails = "expression-sets/details",
|
ExpressionSetsDetails = "expression-sets/details",
|
||||||
Settings = "settings",
|
Settings = "settings",
|
||||||
|
CreateCards = "settings", // TODO split from settings
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RouteOptions {
|
export interface RouteOptions {
|
||||||
|
@ -201,6 +201,12 @@ i {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-list {
|
||||||
|
padding-left: 16px;
|
||||||
|
list-style: disc;
|
||||||
|
margin: var(--gap-small) 0;
|
||||||
|
}
|
||||||
|
|
||||||
.content-list {
|
.content-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
@ -46,7 +46,7 @@ export function DemoteExpressionButton({
|
|||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
>
|
>
|
||||||
<img src="/icons/x.svg" width="24" height="24" alt="" />
|
<img src="/icons/x.svg" width="24" height="24" alt="" />
|
||||||
<span>Wrong</span>
|
<span>I forgot</span>
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ export function ExpressionPracticeCardView({
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={() => setRevealed(true)}
|
onClick={() => setRevealed(true)}
|
||||||
>
|
>
|
||||||
Reveal
|
Tap here to reveal the full card
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</section>
|
</section>
|
||||||
|
@ -33,7 +33,7 @@ export function PromoteExpressionButton({
|
|||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
>
|
>
|
||||||
<img src="/icons/check.svg" width="24" height="24" alt="" />
|
<img src="/icons/check.svg" width="24" height="24" alt="" />
|
||||||
<span>Right</span>
|
<span>I remembered</span>
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,45 @@
|
|||||||
|
import { useContext } from "react";
|
||||||
|
import { AppPath, AppRouting } from "../../model/routing";
|
||||||
|
|
||||||
export function HomeView() {
|
export function HomeView() {
|
||||||
|
const { setRoute } = useContext(AppRouting);
|
||||||
return (
|
return (
|
||||||
<div className="page-with-padding content-text scroll">
|
<div className="page-with-padding content-text scroll">
|
||||||
<h1 className="text-title margin-title">Study Card Tool</h1>
|
<h1 className="text-title margin-title">Study Card Tool</h1>
|
||||||
<p className="text-details margin-paragraph">
|
<p className="text-details margin-paragraph">
|
||||||
A handy tool for vocabulary practice through repetition. Go to{" "}
|
A handy tool for vocabulary practice through repetition. Go to
|
||||||
<i>settings -> create card</i> to start adding words for practicing.
|
"settings" to add some words and you'll be ready to practice.
|
||||||
Once you have a few go to practice and start from your daily words.
|
</p>
|
||||||
|
<nav>
|
||||||
|
<ol className="navigation">
|
||||||
|
<li
|
||||||
|
className="navigation-li"
|
||||||
|
onClick={() => setRoute({ path: AppPath.CreateCards })}
|
||||||
|
>
|
||||||
|
<div className="navigation-item">Create study cards</div>
|
||||||
|
</li>
|
||||||
|
<li
|
||||||
|
className="navigation-li"
|
||||||
|
onClick={() => setRoute({ path: AppPath.ExpressionSetsPractice })}
|
||||||
|
>
|
||||||
|
<div className="navigation-item">Practice</div>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
<p className="text-details margin-paragraph">
|
||||||
|
Newly created cards will go onto the "daily" deck. As you remember and
|
||||||
|
forget word definitions they will move to weekly, monthly, yearly or
|
||||||
|
back towards the daily deck.
|
||||||
|
</p>
|
||||||
|
<p className="text-details margin-paragraph">
|
||||||
|
Words that are remembered beyond the highest level will be removed, and
|
||||||
|
words that are so poorly remembered that you find yourself attempting to
|
||||||
|
create cards for them more than once will have duplicate cards.
|
||||||
</p>
|
</p>
|
||||||
<h2 className="text-title margin-title">Privacy</h2>
|
<h2 className="text-title margin-title">Privacy</h2>
|
||||||
<p className="text-details margin-paragraph">
|
<p className="text-details margin-paragraph">
|
||||||
The app requests data from Wiktionary when you create study cards. Their
|
There is no data collection by the app. The app makes requests to
|
||||||
privacy policy can be found{" "}
|
Wiktionary during card creation, their privacy policy can be found{" "}
|
||||||
<a
|
<a
|
||||||
className="link"
|
className="link"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@ -19,12 +48,7 @@ export function HomeView() {
|
|||||||
>
|
>
|
||||||
on this link
|
on this link
|
||||||
</a>
|
</a>
|
||||||
. Apart from the initial page load, this should be the only time any
|
.
|
||||||
data transfer happens during the usage of the app.
|
|
||||||
</p>
|
|
||||||
<p className="text-details margin-paragraph">
|
|
||||||
Once you save a card, it is stored on your own device and never
|
|
||||||
transmitted anywhere else.
|
|
||||||
</p>
|
</p>
|
||||||
<h2 className="text-title margin-title">Licensing</h2>
|
<h2 className="text-title margin-title">Licensing</h2>
|
||||||
<p className="text-details margin-paragraph">
|
<p className="text-details margin-paragraph">
|
||||||
@ -33,63 +57,46 @@ export function HomeView() {
|
|||||||
You are free to use the app for any purposes. You are free to modify
|
You are free to use the app for any purposes. You are free to modify
|
||||||
and redistribute the app as long as you grant your users access to the
|
and redistribute the app as long as you grant your users access to the
|
||||||
source-code, content and assets you modify and redistribute under the
|
source-code, content and assets you modify and redistribute under the
|
||||||
same terms listed below.{" "}
|
same terms listed below
|
||||||
</strong>{" "}
|
</strong>
|
||||||
As long as you follow those rules, you don't need to contact the
|
|
||||||
author(s) about it.
|
|
||||||
</p>
|
|
||||||
<p className="text-details margin-paragraph">
|
|
||||||
The user-interface icons are licensed under the{" "}
|
|
||||||
<a className="link" target="_blank" href="/icons/icons-license.txt">
|
|
||||||
MIT license
|
|
||||||
</a>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<p className="text-details margin-paragraph">
|
|
||||||
The content for the study cards generated is dual-licensed under{" "}
|
|
||||||
<a
|
|
||||||
className="link"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer"
|
|
||||||
href="https://en.wiktionary.org/wiki/Wiktionary:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License"
|
|
||||||
>
|
|
||||||
Creative Commons Attribution-ShareAlike 3.0 Unported License
|
|
||||||
</a>{" "}
|
|
||||||
and the{" "}
|
|
||||||
<a
|
|
||||||
className="link"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer"
|
|
||||||
href="https://en.wiktionary.org/wiki/Wiktionary:GNU_Free_Documentation_License"
|
|
||||||
>
|
|
||||||
GNU Free Documentation License
|
|
||||||
</a>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<p className="text-details margin-paragraph">
|
|
||||||
The rest of the application and its assets are licensed under the{" "}
|
|
||||||
<a
|
|
||||||
className="link"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer"
|
|
||||||
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
|
||||||
>
|
|
||||||
GNU Affero General Public License version 3
|
|
||||||
</a>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<p className="text-details margin-paragraph">
|
|
||||||
The official source code repository for this application can be found at{" "}
|
|
||||||
<a
|
|
||||||
className="link"
|
|
||||||
target="_blank"
|
|
||||||
rel="noreferrer"
|
|
||||||
href="https://git.studycardtool.org/tcoh/app"
|
|
||||||
>
|
|
||||||
git.studycardtool.org/tcoh/app
|
|
||||||
</a>
|
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
|
<ul className="item-list">
|
||||||
|
<li className="margin-small">
|
||||||
|
<a className="link" target="_blank" href="/icons/icons-license.txt">
|
||||||
|
User interface icons
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className="margin-small">
|
||||||
|
<a
|
||||||
|
className="link"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://creativecommons.org/licenses/by-sa/3.0/"
|
||||||
|
>
|
||||||
|
Study cards text
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className="margin-small">
|
||||||
|
<a
|
||||||
|
className="link"
|
||||||
|
target="_blank"
|
||||||
|
href="/static/js/full-license-manifest.txt"
|
||||||
|
>
|
||||||
|
3rd-party javascript libraries
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className="margin-small">
|
||||||
|
<a
|
||||||
|
className="link"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
||||||
|
>
|
||||||
|
Study Card Tool original source code
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
<h2 className="text-title margin-title">Support the app</h2>
|
<h2 className="text-title margin-title">Support the app</h2>
|
||||||
<p className="text-details margin-paragraph">
|
<p className="text-details margin-paragraph">
|
||||||
This app would not exist if it was not for Wiktionary and the Wikimedia
|
This app would not exist if it was not for Wiktionary and the Wikimedia
|
||||||
@ -107,16 +114,17 @@ export function HomeView() {
|
|||||||
</p>
|
</p>
|
||||||
<h2 className="text-title margin-title">Contributing</h2>
|
<h2 className="text-title margin-title">Contributing</h2>
|
||||||
<p className="text-details margin-paragraph">
|
<p className="text-details margin-paragraph">
|
||||||
The main thing on the roadmap is improved language support for
|
Code, comments and feedback, design improvements are very much welcome.
|
||||||
vocabulary practice. The app still needs bugfixes, code and style
|
To participate join the official repository
|
||||||
cleanup and potentially rethinking of some existing features.
|
<a
|
||||||
Contributions introducing a need for smarter backend functionality than
|
className="link"
|
||||||
a static file server are in principle unwelcome in this project.
|
target="_blank"
|
||||||
</p>
|
rel="noreferrer"
|
||||||
<p className="text-details margin-paragraph">
|
href="https://git.studycardtool.org/tcoh/app"
|
||||||
There are a few pending tasks in server configuration and testing, but
|
>
|
||||||
once those are done local gitea registrations for contributors should
|
here
|
||||||
open and potentially federated accounts as well.
|
</a>
|
||||||
|
.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user