Skip to content

Commit 3432521

Browse files
committed
Merge branch 'main' of github.com:Rootpie-Studios/RootPiWebsite
2 parents 5504d78 + 26b6864 commit 3432521

4 files changed

Lines changed: 181 additions & 13 deletions

File tree

src/App.css

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ html {
9999
.hero-section {
100100
position: relative;
101101
background-color: var(--page-bg);
102+
background-image:
103+
radial-gradient(ellipse 70% 55% at 50% 45%, rgba(96, 165, 250, 0.055) 0%, transparent 70%);
102104
overflow: hidden;
103105
}
104106

@@ -141,21 +143,33 @@ html {
141143

142144
/* Hero floating balls */
143145
@keyframes ballFadeIn {
144-
from { opacity: 0; }
145-
to { opacity: 1; }
146+
from { opacity: 0; transform: scale(0.92); }
147+
to { opacity: 1; transform: scale(1); }
148+
}
149+
150+
@keyframes heroFadeUp {
151+
from { opacity: 0; transform: translateY(18px); }
152+
to { opacity: 1; transform: translateY(0); }
153+
}
154+
155+
.hero-content-animate {
156+
opacity: 0;
157+
animation: heroFadeUp 0.7s ease-out forwards;
146158
}
147159

148160
.hero-ball {
149161
position: absolute;
150162
border-radius: 50%;
151163
object-fit: cover;
152-
border: 1px solid rgba(255,255,255,0.15);
164+
border: 1px solid rgba(255,255,255,0.18);
153165
background: white;
154166
padding: 0;
155167
box-shadow:
156-
0 8px 40px rgba(0, 0, 0, 0.5),
157-
0 0 50px rgba(255, 255, 255, 0.09),
158-
0 0 100px rgba(255, 255, 255, 0.04);
168+
0 8px 40px rgba(0, 0, 0, 0.55),
169+
0 0 0 1px rgba(96, 165, 250, 0.08),
170+
0 0 40px rgba(96, 165, 250, 0.18),
171+
0 0 90px rgba(96, 165, 250, 0.10),
172+
0 0 160px rgba(96, 165, 250, 0.06);
159173
z-index: 5;
160174
opacity: 0;
161175
filter: brightness(0.88);
@@ -168,23 +182,23 @@ html {
168182
height: 190px;
169183
left: 6%;
170184
top: 16%;
171-
animation: ballFadeIn 1s ease-out 0.2s forwards;
185+
animation: ballFadeIn 1.1s cubic-bezier(0.34, 1.56, 0.64, 1) 0.2s forwards;
172186
}
173187

174188
.hero-ball-2 {
175189
width: 155px;
176190
height: 155px;
177191
left: 8%;
178192
bottom: 20%;
179-
animation: ballFadeIn 1s ease-out 0.45s forwards;
193+
animation: ballFadeIn 1.1s cubic-bezier(0.34, 1.56, 0.64, 1) 0.45s forwards;
180194
}
181195

182196
.hero-ball-3 {
183197
width: 200px;
184198
height: 200px;
185199
right: 5%;
186200
top: 20%;
187-
animation: ballFadeIn 1s ease-out 0.35s forwards;
201+
animation: ballFadeIn 1.1s cubic-bezier(0.34, 1.56, 0.64, 1) 0.35s forwards;
188202
}
189203

190204
@media (max-width: 1100px) {

src/MainRouter.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import TraumaSimPrivacyPolicyPage from "./Pages/TraumaSimPrivacyPolicyPage";
1010
import StreaksPrivacyPolicyPage from "./Pages/StreaksPrivacyPolicyPage";
1111
import TimetrackerPrivacyPolicyPage from "./Pages/TimeTrackerPrivacyPolicyPage";
1212
import LekaosPrivacyPolicyPage from "./Pages/LekaosPrivacyPolicyPage";
13+
import BogeyBeastsPrivacyPolicyPage from "./Pages/BogeyBeastsPrivacyPolicyPage";
1314
import SetupGuidePage from "./Pages/SetupGuidePage";
1415

1516
function MainRouter(props) {
@@ -42,6 +43,11 @@ function MainRouter(props) {
4243
path="/lekaos-privacy-policy"
4344
element={<LekaosPrivacyPolicyPage />}
4445
/>
46+
<Route
47+
exact
48+
path="/bogeybeasts-privacy-policy"
49+
element={<BogeyBeastsPrivacyPolicyPage />}
50+
/>
4551
<Route exact path="*" element={<NotFoundPage />} />
4652
</Routes>
4753
</BrowserRouter>
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
import React from "react";
2+
import ReactMarkdown from "react-markdown";
3+
import Header from "../Components/Header";
4+
import Footer from "../Components/Footer";
5+
import logo from "../images/LogoTextTransBlack.png";
6+
import "../css/privacy_policy.css";
7+
8+
function BogeyBeastsPrivacyPolicyPage() {
9+
const privacyPolicyMarkdown = `
10+
**Privacy policy**
11+
12+
**1. Background**
13+
14+
This personal data policy ("Policy") states **rules** and **guidelines** how personal data is handled by **RootPi AB**'s game Bogey Beasts. The policy states how personal data is collected, what they are used for, how the app users control their personal data and how app users can contact the responsible with any questions.
15+
16+
**2. Purpose**
17+
18+
The purpose of this policy is to **give app users information** about how their personal data could be used by the app.
19+
20+
**3. Definition of personal data**
21+
22+
Personal data is any information that, either directly or indirectly, could be used to **identify a living physical individual**. With **direct personal data** an individual can be identified by one sole data point while **indirect personal data** can identifiy an individual together with other data points.
23+
24+
**4. User agreement**
25+
26+
**a) Requesting user agreement**
27+
28+
In order to collect personal data the user has to agree to what data is collected. The request should be made informative and clear so that all users know the meaning of it.
29+
30+
We collect agreement in the following way:
31+
32+
* Agreement is requested by asking a new user to read and accept this policy before they can use the app.
33+
34+
**b) Revoking the agreement**
35+
36+
A user can at any point revoke their agreement, which is made in the following way:
37+
38+
* Agreement can be revoked by deleting the account in the app or sending an email to [info@rootpi.xyz](mailto:info@rootpi.xyz).
39+
40+
**c) Right to have personal data deleted**
41+
42+
When the agreement is revoked the user can also request their personal data to be deleted from all servers. This is done with an email to [info@rootpi.xyz](mailto:info@rootpi.xyz).
43+
44+
**5. Processing of personal data**
45+
46+
**a) Personal data that is collected**
47+
48+
The following personal data is collected by the app and processed by us:
49+
50+
* Email
51+
* Password (stored in encrypted form)
52+
53+
**b) Reason for collection of personal data**
54+
55+
The personal data is collected and processed for the following purposes:
56+
57+
* Personal data is collected to allow the user to create an account and use the app.
58+
59+
**c) Personal data is shared with**
60+
61+
All collected personal data will be contained in **RootPi AB** and will not be sold or given to any third parties.
62+
63+
**d) Period personal data is saved**
64+
65+
The personal data is only allowed to be saved for the period it is needed for the app functionallity.
66+
67+
**6. Safety and encryption**
68+
69+
All traffic to the server is encrypted with SSL-certificate (Secure Socket Layer) that ensures that the user's personal data is transfered in a secure and confidential way through encrypting the information. Passwords are stored in hashed and encrypted form and are never stored or transmitted in plain text. The app has taken suitable security measures to prevent that personal data that is stored on the server is lost or used in illegal or unproper ways. The access to the personal data that is collected is restricted to authorized personell and will only be handled confidentially.
70+
71+
If an incident regarding personal data occurs the affected users will be notified and it will be reported to **IMY** (Swedish Authority for Privacy Protection).
72+
73+
**7. User rights**
74+
75+
76+
**a) Right to access own data**
77+
78+
After agreeing to the policy the user has the right to request information if their personal data is being proccessed. If they are proccessed the user has the right to access the data.
79+
80+
The request to access own personal data is made by sending an email to [info@rootpi.xyz](mailto:info@rootpi.xyz).
81+
82+
The data is sent to the user in text via digital email.
83+
84+
**b) Right to information and correction**
85+
86+
After agreeing to the policy the user has the right to request what personal data that is being stored and correct any faulty information. If any data is missing the user also have the right to complete them.
87+
88+
**c) Right to deletion**
89+
90+
The user has the right to request that all personal data connected to them is deleted. There are situations where this right is not valid but in following cases the data must be deleted:
91+
92+
- If the personal data is no longer needed for the purpose it was collected
93+
- If the agreement of the policy is revoked
94+
- If the personal data is used in direct marketing and the user opposes it
95+
- If there is no legitimate reasons that outweighs the individual's interest in deleting the information
96+
- If the personal data is processed in an illegal way
97+
- If the deletion is required to fulfill a legal obligation
98+
99+
**d) Automated decision making**
100+
101+
Users have the right not to be subject to automated decisions, if such a decision can have legal consequences for the individual or similarly affect him to a significant degree.
102+
103+
**e) Identification**
104+
105+
If a user requests that information should be deleted, the user in question must be identified. This is done by the user being authorized to their account.
106+
107+
**f) Complaint**
108+
109+
If a user considers their personal data to being processed in violation of the GDPR in the app, a complaint can be submitted primarily to us and secondarily to the Swedish Privacy Protection Authority.
110+
111+
**g) Damages**
112+
113+
In a situation where a user's personal data has been processed in violation of the GDPR, a right to compensation may arise. A claim for damages can be brought in general court with the district court as the first instance.
114+
115+
**8. Changes to the Policy**
116+
117+
This policy was published on May 16, 2026
118+
119+
This policy may change, which is why the app's users are encouraged to read the policy periodically. Users will also be notified about any changes made
120+
121+
**9. Contact**
122+
123+
For questions related to the website and its content, we can be reached via e-mail sent to [info@rootpi.xyz](mailto:info@rootpi.xyz).
124+
125+
Response time: 3-5 work days.
126+
127+
`;
128+
129+
return (
130+
<div className="App">
131+
<Header
132+
subtitle={<img className="header-image-container" src={logo} alt="" />}
133+
/>
134+
<main>
135+
<div>
136+
<div className="about-container markdown-content">
137+
<ReactMarkdown>{privacyPolicyMarkdown}</ReactMarkdown>
138+
</div>
139+
</div>
140+
</main>
141+
<Footer />
142+
</div>
143+
);
144+
}
145+
146+
export default BogeyBeastsPrivacyPolicyPage;

src/Pages/HomePage.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,15 @@ function HomePage() {
5656

5757
<div className="relative z-10 flex flex-col items-center text-center px-6 max-w-4xl mx-auto">
5858
<h1
59-
className="font-display font-bold tracking-tight leading-none mb-6 text-7xl md:text-[8rem] bg-gradient-to-b from-white to-zinc-400 bg-clip-text text-transparent"
59+
className="hero-content-animate font-display font-bold tracking-tight leading-none mb-6 text-7xl md:text-[8rem] bg-gradient-to-b from-white to-zinc-400 bg-clip-text text-transparent"
60+
style={{ animationDelay: "0.1s" }}
6061
>
6162
RootPi
6263
</h1>
63-
<p className="text-lg md:text-xl text-ink-muted mb-4 font-normal">
64+
<p className="hero-content-animate text-lg md:text-xl text-ink-muted mb-4 font-normal" style={{ animationDelay: "0.25s" }}>
6465
Fullstack applications &amp; AI solutions
6566
</p>
66-
<p className="text-sm md:text-base text-ink-subtle max-w-xs leading-relaxed mb-10" style={{ textWrap: "balance" }}>
67+
<p className="hero-content-animate text-sm md:text-base text-ink-subtle max-w-xs leading-relaxed mb-10" style={{ textWrap: "balance", animationDelay: "0.4s" }}>
6768
<span className="block">
6869
We build custom software — web platforms, mobile apps, VR
6970
simulations and AI tools.
@@ -74,7 +75,8 @@ function HomePage() {
7475
</p>
7576
<button
7677
onClick={scrollToContact}
77-
className="px-8 py-3.5 rounded-lg bg-white text-surface-page text-sm font-bold hover:bg-zinc-200 transition-colors duration-200 cursor-pointer tracking-wide inline-block w-auto"
78+
className="hero-content-animate px-8 py-3.5 rounded-lg bg-white text-surface-page text-sm font-bold hover:bg-zinc-200 transition-colors duration-200 cursor-pointer tracking-wide inline-block w-auto"
79+
style={{ animationDelay: "0.55s" }}
7880
>
7981
Get in touch
8082
</button>

0 commit comments

Comments
 (0)