Skip to content

Commit 0cca53f

Browse files
committed
Implement discontinued projects
1 parent 5443245 commit 0cca53f

28 files changed

+515
-61
lines changed

app/Providers/AppServiceProvider.php

+26
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Providers;
44

5+
use Illuminate\Support\Facades\File;
56
use Illuminate\Support\ServiceProvider;
67
use Statamic\Entries\Entry;
78
use Statamic\Facades\Collection;
@@ -47,11 +48,36 @@ public function boot(): void
4748
switch ($entry->value('state')) {
4849
case 'live':
4950
return 'bg-jade-lighter text-jade-darker';
51+
case 'archived':
5052
case 'experimental':
5153
return 'bg-yellow-lighter text-yellow-darker';
5254
default:
5355
return 'bg-blue-lighter text-blue-darker';
5456
}
5557
});
58+
59+
Collection::computed('projects', 'images', function (Entry $entry) {
60+
$id = $entry->id();
61+
62+
if (! is_string($id)) {
63+
return [];
64+
}
65+
66+
$project = substr($id, 0, strlen($id) - 8);
67+
$imagesPath = "img/projects/{$project}/images";
68+
69+
return collect(File::files(public_path($imagesPath)))
70+
->map(function ($file, $index) use ($imagesPath) {
71+
$filename = $file->getFilename();
72+
$number = $index + 1;
73+
74+
return [
75+
'url' => "/{$imagesPath}/{$filename}",
76+
'description' => "Project image ({$number})",
77+
];
78+
})
79+
->sortBy('url')
80+
->toArray();
81+
});
5682
}
5783
}
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
id: beastmasters
3+
blueprint: page
4+
title: 'BeastMasters: Twin Soul Legends'
5+
show_title: false
6+
template: projects/show
7+
---
8+
9+
_BeastMasters: Twin Soul Legends_ was a mobile game that we launched in 2015. It was an online turn-based card game; think about it like a mix between Magic the Gathering and Chess — with a dash of League of Legends. A deck consisted of a bunch of creatures and some heroes. You would fight against other players in the Arena, and you could improve your deck with new cards as you leveled up.
10+
11+
It had a short run, but working on this project was extremely fun and I'm still proud of what we achieved. Under the hood, there was more than the eye could see. We rolled out a server to manage the library remotely, bots for training and tutorials, a custom protocol to synchronize (and replay) actions in real-time, and the characters even had a Lore that was never published.
12+
13+
This was a joint effort with multiple disciplines, and it was completely crafted in-house. We made all the programming from scratch, illustrations, design and even a soundtrack. Make sure to check out the team if you want to learn more about others who made this possible.
14+
15+
If you're curious, you can take a look at the images below and download the demo to play against bots. It's very reduced and you won't see everything the game had to offer, but it's enough to give you a taste of what it was. And it works offline, so it won't be a problem that the servers are no longer running.
16+
17+
<a href="/downloads/beastmasters.apk" class="mx-auto h-10 w-56 flex items-center justify-center rounded no-underline font-semibold tracking-wider text-[#3dda84] bg-[#073042] hover:[box-shadow:rgb(255,255,255)_0px_0px_0px_0px,rgb(61,218,132)_0px_0px_0px_4px,rgba(0,0,0,0)_0px_0px_0px_0px] focus:[box-shadow:rgb(255,255,255)_0px_0px_0px_0px,rgb(61,218,132)_0px_0px_0px_4px,rgba(0,0,0,0)_0px_0px_0px_0px]">
18+
{{ partial:icons/android class="size-5 fill-current mr-2" }}
19+
Download demo
20+
</a>

content/collections/pages/geemba.md

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
id: geemba
3+
blueprint: page
4+
title: Geemba
5+
show_title: false
6+
template: projects/show
7+
---
8+
9+
_Geemba_ was [a startup I co-founded](/blog/10-years-as-a-software-developer#2016-startup-life) that was active from 2016 to 2018. We aimed to make fitness more accessible by granting access to sport facilities charging by the minute, without paying subscriptions. People would download our mobile application, validate the entrance on the reception desk, and use the facilities as long as they wished. Our service would track how much time they spent inside, and charge them accordingly.
10+
11+
We started the company focusing on mediating the access, but eventually we also began building tools for assisting with training and helping the gym staff. We called this service "Geemba Assistant", and it gave the gym staff tools to organize their work, communicate with customers (all of them, not only the ones using our app), and create personalized training routines.
12+
13+
We also provided a service to publish dedicated applications for each gym. People who weren't subscribed to the gym would access paying by the minute in the same way they would using our app (albeit with a custom branding). And regular customers would also benefit from the application by consulting schedules, news, and receiving push notifications for important notices.
14+
15+
The service has been discontinued, but you can look at the PDF and screenshots below to get an idea of what it was like.
16+
17+
<a href="/downloads/geemba-assistant.pdf" target="_blank" class="mx-auto h-10 w-64 flex items-center justify-center rounded no-underline font-semibold tracking-wider text-white bg-[#00168e] hover:[box-shadow:rgb(255,255,255)_0px_0px_0px_0px,rgba(0,22,142,.5)_0px_0px_0px_4px,rgba(0,0,0,0)_0px_0px_0px_0px] focus:[box-shadow:rgb(255,255,255)_0px_0px_0px_0px,rgba(0,22,142,.5)_0px_0px_0px_4px,rgba(0,0,0,0)_0px_0px_0px_0px]">
18+
{{ partial:icons/document class="size-5 fill-current mr-2" }}
19+
Download overview
20+
</a>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
id: beastmasters-project
3+
blueprint: project
4+
title: beastmasters
5+
category: discontinued
6+
logo: /img/logos/beastmasters.png
7+
link: 'entry::beastmasters'
8+
state: archived
9+
platform: Android
10+
team:
11+
- id: noel
12+
type: team_member
13+
name: 'Noel De Martin'
14+
link: 'https://noeldemartin.com'
15+
avatar: /img/avatar.jpg
16+
role: 'CTO & Co-founder'
17+
- id: sergio-sanchez
18+
type: team_member
19+
name: 'Sergio Sanchez Mendez'
20+
link: 'https://www.linkedin.com/in/sergiosanchezmendez'
21+
avatar: /img/projects/beastmasters/team/sergio-sanchez.jpg
22+
role: 'CEO & Co-founder'
23+
- id: adria
24+
type: team_member
25+
name: 'Adrià Bernabeu Cañabate'
26+
link: 'https://www.artstation.com/bernanart'
27+
avatar: /img/projects/beastmasters/team/adria.jpg
28+
role: 'Illustrations & Design'
29+
- id: sergio-moreno
30+
type: team_member
31+
name: 'Sergio Moreno'
32+
link: 'https://www.linkedin.com/in/sergio-moreno-5a2756a5'
33+
avatar: /img/projects/beastmasters/team/sergio-moreno.jpg
34+
role: 'Design & Color'
35+
- id: manel
36+
type: team_member
37+
name: 'Manel P. Pérez'
38+
link: 'https://www.linkedin.com/in/manuel-p-p%C3%A9rez-362bb785'
39+
role: Sound Design
40+
---
41+
42+
Recruit powerful beasts and build your deck in this strategy card game.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
id: brain-duels
3+
blueprint: project
4+
title: Brain Duels
5+
category: discontinued
6+
logo: https://lincolnschilli.com/img/apps/brainduels.png
7+
link: https://web.archive.org/web/20160630211718/https://play.google.com/store/apps/details?id=com.lincolnschilli.brainduels
8+
state: archived
9+
platform: Android
10+
---
11+
12+
Compete with Brain games in an online arena.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
id: geemba-project
3+
blueprint: project
4+
title: Geemba
5+
category: discontinued
6+
logo: /img/logos/geemba.png
7+
link: 'entry::geemba'
8+
state: archived
9+
platform: 'Android & iOS'
10+
team:
11+
- id: noel
12+
type: team_member
13+
name: 'Noel De Martin'
14+
link: 'https://noeldemartin.com'
15+
avatar: /img/avatar.jpg
16+
role: 'CTO & Co-founder'
17+
- id: david
18+
type: team_member
19+
name: 'David Gómez'
20+
link: 'https://www.linkedin.com/in/dgvicario'
21+
avatar: /img/projects/geemba/team/david.jpg
22+
role: 'CEO & Co-founder'
23+
- id: arnau
24+
type: team_member
25+
name: 'Arnau Betoret Solà'
26+
link: 'https://www.behance.net/arnaubetoret'
27+
avatar: /img/projects/geemba/team/arnau.jpg
28+
role: Designer
29+
- id: oscar
30+
type: team_member
31+
name: 'Oscar Loro Castilla'
32+
link: 'https://www.linkedin.com/in/oscarloro'
33+
avatar: /img/projects/geemba/team/oscar.jpg
34+
role: Community Manager
35+
- id: vanesa
36+
type: team_member
37+
name: 'Vanesa Molina Sánchez'
38+
link: 'https://www.linkedin.com/in/vanesamolinasanchez'
39+
avatar: /img/projects/geemba/team/vanesa.jpg
40+
role: Digital Media Marketing
41+
- id: yahia
42+
type: team_member
43+
name: 'Yahia Gutierrez'
44+
link: 'https://www.linkedin.com/in/yahia-gutierrez-3b5ba0110'
45+
avatar: /img/projects/geemba/team/yahia.jpg
46+
role: Sales And Marketing Specialist
47+
- id: anna
48+
type: team_member
49+
name: 'Anna Bes González'
50+
link: 'https://cyumus.com'
51+
avatar: /img/projects/geemba/team/anna.jpg
52+
role: Developer
53+
---
54+
55+
Access sport facilities near you and pay only by the minute.
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
id: quick-pick
3+
blueprint: project
4+
title: Quick Pick
5+
category: discontinued
6+
logo: https://lincolnschilli.com/img/apps/quickpick.png
7+
link: https://web.archive.org/web/20160630204222/https://play.google.com/store/apps/details?id=com.lincolnschilli.quickpick
8+
state: archived
9+
platform: Android
10+
---
11+
12+
Test your memory and speed in a relaxed atmosphere.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
id: travel-postcards
3+
blueprint: project
4+
title: Travel Postcards
5+
category: discontinued
6+
logo: https://lincolnschilli.com/img/apps/postcards.png
7+
link: https://postcards.lincolnschilli.com
8+
state: archived
9+
platform: Web
10+
---
11+
12+
Send postcards from your trip to Europe.

content/trees/collections/pages.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@ tree:
22
- entry: home
33
- entry: blog
44
- entry: projects
5+
children:
6+
- entry: beastmasters
7+
- entry: geemba

content/trees/collections/projects.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,8 @@ tree:
1515
- entry: rireki
1616
- entry: nginx-agora
1717
- entry: autonomous-data
18+
- entry: geemba-project
19+
- entry: beastmasters-project
20+
- entry: travel-postcards
21+
- entry: brain-duels
22+
- entry: quick-pick

package-lock.json

+28
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
},
1212
"devDependencies": {
1313
"@tailwindcss/vite": "^4.0.0-beta.9",
14+
"alpinejs": "^3.14.8",
1415
"concurrently": "^9.1.2",
1516
"laravel-vite-plugin": "^1.0.2",
1617
"prettier": "^3.4.2",

public/downloads/.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# These are some "large" files that I upload manually to the server.
2+
beastmasters.apk
3+
geemba-assistant.pdf

resources/blueprints/collections/pages/page.yaml

+9-7
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@ tabs:
1010
required: true
1111
validate:
1212
- required
13-
- handle: icon
13+
width: 75
14+
- handle: show_title
1415
field:
15-
type: text
16-
display: Icon
16+
type: toggle
17+
display: 'Show title'
18+
default: true
19+
width: 25
1720
- handle: content
1821
field:
1922
type: markdown
@@ -31,11 +34,10 @@ tabs:
3134
field:
3235
type: slug
3336
validate: 'max:200'
34-
- handle: show_title
37+
- handle: icon
3538
field:
36-
default: true
37-
type: toggle
38-
display: 'Show title'
39+
type: text
40+
display: Icon
3941
- handle: parent
4042
field:
4143
type: entries

resources/blueprints/collections/projects/project.yaml

+37-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ tabs:
1313
width: 33
1414
- handle: link
1515
field:
16-
input_type: url
17-
type: text
18-
display: Url
16+
type: link
17+
display: Link
1918
width: 66
2019
- handle: logo
2120
field:
@@ -43,6 +42,8 @@ tabs:
4342
value: App
4443
- key: tool
4544
value: 'Developer Tool'
45+
- key: discontinued
46+
value: Discontinued
4647
type: select
4748
display: Category
4849
validate:
@@ -56,6 +57,8 @@ tabs:
5657
value: WIP
5758
- key: experimental
5859
value: Experimental
60+
- key: archived
61+
value: Archived
5962
type: select
6063
display: State
6164
validate:
@@ -64,3 +67,34 @@ tabs:
6467
field:
6568
type: text
6669
display: Platform
70+
page:
71+
display: Page
72+
sections:
73+
- fields:
74+
- handle: team
75+
field:
76+
type: replicator
77+
display: Team
78+
sets:
79+
team_members:
80+
display: ''
81+
sets:
82+
team_member:
83+
display: 'Team member'
84+
fields:
85+
- handle: name
86+
field:
87+
type: text
88+
display: Name
89+
- handle: avatar
90+
field:
91+
type: text
92+
display: Avatar
93+
- handle: link
94+
field:
95+
type: link
96+
display: Link
97+
- handle: role
98+
field:
99+
type: text
100+
display: Role

resources/css/base.css

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
html {
2+
--default-display: revert !important;
3+
}
4+
15
main {
26
a {
37
@apply underline;

0 commit comments

Comments
 (0)