Compare commits

...

13 Commits

Author SHA1 Message Date
Richard Hajek
6430f971af
Merge 42e954428b into 4db9a95a91 2025-03-07 20:26:50 +06:00
Kingkor Roy Tirtho
4db9a95a91 chore: update linux appdata screenshot 2025-03-07 20:20:56 +06:00
Kingkor Roy Tirtho
3cce2868de website: remove playstore button 2025-03-07 20:12:05 +06:00
Kingkor Roy Tirtho
894b0d7e5e Merge branch 'dev' into website 2025-03-07 20:08:09 +06:00
Kingkor Roy Tirtho
7befbca8e5 chore: update images 2025-03-07 20:06:58 +06:00
Richard Hajek
42e954428b feat: added filtering duplicates in recent 2025-01-18 18:01:26 +01:00
Kingkor Roy Tirtho
ccf84c568e website: show overlay ads at bottom not blocking the view 2024-12-23 09:02:49 +06:00
Kingkor Roy Tirtho
fdb5ed8f56 website: publish from idea to impact 2024-12-22 23:12:12 +06:00
Kingkor Roy Tirtho
55871e3cdd website: change download page ad 2024-12-16 11:50:12 +06:00
Kingkor Roy Tirtho
0aa44520ac website: redirect from /other-downloads/stable-downloads/ to /downloads 2024-12-16 11:43:41 +06:00
Kingkor Roy Tirtho
8c1337d1fc
Merge pull request #2118 from KRTirtho/dev
chore: release 3.9.0
2024-12-09 00:04:29 +06:00
Kingkor Roy Tirtho
94e704087f Merge branch 'dev' 2024-10-09 16:38:23 +06:00
Kingkor Roy Tirtho
8e287ab1e5
Merge pull request #1981 from KRTirtho/dev
Release 3.8.3
2024-10-09 15:39:31 +06:00
31 changed files with 84 additions and 30 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 469 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 KiB

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 750 KiB

After

Width:  |  Height:  |  Size: 1006 KiB

View File

@ -20,17 +20,20 @@ class HomeRecentlyPlayedSection extends HookConsumerWidget {
return const SizedBox();
}
final uniqueItems = <dynamic>{};
final filteredItems = [
for (final item in historyData)
if (item.playlist != null && item.playlist?.id != null && uniqueItems.add(item.playlist!.id!))
item.playlist
else if (item.album != null && item.album?.id != null && uniqueItems.add(item.album?.id))
item.album
];
return Skeletonizer(
enabled: history.isLoading,
child: HorizontalPlaybuttonCardView(
title: Text(context.l10n.recently_played),
items: [
for (final item in historyData)
if (item.playlist != null)
item.playlist
else if (item.album != null)
item.album
],
items: filteredItems,
hasNextPage: false,
isLoadingNextPage: false,
onFetchMore: () {},

View File

@ -36,7 +36,7 @@
<screenshots>
<screenshot type="default">
<image type="source">
https://rawcdn.githack.com/KRTirtho/spotube/62055018feade0b895663a0bfc5f85f265ae2154/assets/spotube-screenshot.png
https://rawcdn.githack.com/KRTirtho/spotube/refs/heads/master/assets/spotube-screenshot.png
</image>
<caption>Spotube screenshot</caption>
</screenshot>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 469 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 469 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -60,5 +60,15 @@
"remark-reading-time": "^1.0.1",
"svelte-fa": "^4.0.2",
"svelte-markdown": "^0.4.1"
},
"packageManager": "pnpm@10.4.0+sha512.6b849d0787d97f8f4e1f03a9b8ff8f038e79e153d6f11ae539ae7c435ff9e796df6a862c991502695c7f9e8fac8aeafc1ac5a8dab47e36148d183832d886dd52",
"pnpm": {
"onlyBuiltDependencies": [
"@fortawesome/fontawesome-common-types",
"@fortawesome/free-brands-svg-icons",
"@sveltejs/kit",
"esbuild",
"svelte-preprocess"
]
}
}

View File

@ -0,0 +1,36 @@
---
title: From Idea to Impact
author: Prottoy Roy
date: 2024-12-22
published: true
cover_img: /images/from-idea-to-impact/cover.jpg
---
> An school magazine article by the beloved brother of the founder of the Spotube app
In the vibrant city of Narayanganj, Dhaka, Bangladesh, a young man named Kingkor Roy Tirtho was carving out his path in the world of technology. Currently a second-year Computer Science and Engineering (CSE) student at East West University, Kingkor had always been captivated by the magic of coding. From a young age, he spent countless hours tinkering with computers, teaching himself programming languages and exploring the digital realm.
Kingkor's passion wasn't just about writing code; it was about solving problems and creating innovative solutions. Inspired by the way technology could enhance everyday life, he dreamed of building apps that would bring joy and convenience to users. His dedication was evident; he often participated in hackathons and coding competitions, where he showcased his talent and creativity.
The turning point in his journey came when he envisioned an app that would revolutionize music streaming. With millions of people seeking accessible music, he wanted to create a platform that could bridge gaps and provide a seamless experience. Thus, Spotube was born.
Initially, Kingkor faced numerous challenges. Balancing his academic responsibilities with app development was no easy feat. There were nights filled with coding, debugging, and sleepless hours fueled by caffeine and determination. Despite setbacks and moments of self-doubt, Kingkor remained resilient. He sought feedback, learned from criticisms, and continually iterated on his project.
As Spotube gained traction, it garnered attention for its user-friendly interface and innovative features. Kingkors ability to blend technical skills with an understanding of user needs made the app a hit among music lovers. He received positive reviews, not just for the functionality, but for the passion evident in his work.
Kingkors story is one of perseverance and innovation. He embodies the spirit of a new generation of tech enthusiasts who believe that with dedication, anything is possible. His journey serves as an inspiration to his peers at East West University and beyond, reminding them that the intersection of creativity and technology can lead to remarkable achievements.
Today, Kingkor continues to evolve as a developer, always looking for ways to improve Spotube and explore new ideas. His story illustrates that genius isn't just about raw talent; it's about hard work, resilience, and the willingness to dream big. Kingkor Roy Tirtho is a shining example of what can be achieved when passion meets perseverance, and he is just getting international attentions.
Here is some key features of Spotube:
1. **Seamless Music Streaming**: Spotube offers a smooth streaming experience with a vast library of tracks, allowing users to easily find and play their favorite songs.
1. **Offline Listening**: Users can download their favorite tracks for offline playback, making it convenient to enjoy music anytime, anywhere, without relying on an internet connection.
1. **User-Friendly Interface**: The app is designed with an intuitive interface, making navigation easy for users of all ages. Its clean layout ensures a pleasant user experience.
1. **Cross-Platform Compatibility**: Spotube is accessible on multiple devices, enabling users to enjoy their music on smartphones, tablets, and desktops seamlessly.
1. **Personalized Playlists**: Users can create and manage their playlists, helping them curate their listening experience based on their mood and preferences.
1. **Social Sharing Features**: The app allows users to share their favorite tracks and playlists with friends and family, fostering a community of music lovers.
1. **Regular Updates**: Spotube is continually updated with new features and improvements based on user feedback, reflecting Kingkor's commitment to enhancing the app's performance and user satisfaction.
1. **Global Reach**: With its growing popularity, Spotube is gaining attention worldwide, attracting users from various countries and cultures, showcasing Kingkors vision of accessible music for everyone. He's recently got mentioned in a Spanish well known magazine for his invention.
As Spotube continues to evolve, Kingkor Roy Tirtho's innovative approach is positioning him and his app as significant players in the music streaming landscape, capturing the attention of users and industry experts alike.

View File

@ -14,7 +14,7 @@
<!-- Android Chrome -->
<link rel="manifest" href="%sveltekit.assets%/manifest.json" />
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6419300932495863"
crossorigin="anonymous"></script>
data-overlays="bottom" crossorigin="anonymous"></script>
%sveltekit.head%
</head>

View File

@ -9,3 +9,15 @@
src: url('/fonts/AbrilFatface.ttf');
font-display: swap;
}
.text-stroke {
text-shadow:
-1px -1px 0 #000,
1px -1px 0 #000,
-1px 1px 0 #000,
1px 1px 0 #000,
-1px 0 0 #000,
1px 0 0 #000,
0 -1px 0 #000,
0 1px 0 #000;
}

View File

@ -97,7 +97,7 @@ export const extendedNightlyDownloadLinks: Record<
export const ADS_SLOTS = Object.freeze({
rootPageDisplay: 5979549631,
blogPageInFeed: 3386010031,
downloadPageDisplay: 9521642154,
downloadPageDisplay: 9928443050,
packagePageArticle: 9119323068,
// This is being used for rehype-auto-ads in svelte.config.js
blogArticlePageArticle: 6788673194,

View File

@ -53,17 +53,9 @@
built with Electron (web technologies)
</p>
<br />
<div class="flex items-center">
<a
href="https://play.google.com/store/apps/details?id=oss.krtirtho.spotube"
target="_blank"
>
<img
class="-m-2"
src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"
alt="Google PlayStore"
width="200"
/>
<div class="flex items-center gap-3">
<a href="https://news.ycombinator.com/item?id=39066136" target="_blank">
<img src="https://hackerbadge.vercel.app/api?id=39066136" alt="HackerNews" />
</a>
<a href="https://flathub.org/apps/com.github.KRTirtho.Spotube" target="_blank">
<img
@ -73,12 +65,7 @@
/>
</a>
</div>
<br />
<a href="https://news.ycombinator.com/item?id=39066136" target="_blank">
<img src="https://hackerbadge.vercel.app/api?id=39066136" alt="HackerNews" />
</a>
</div>
<br class="hidden md:block" />
<div class="flex justify-center">
<a href="/downloads" class="flex gap-2 btn variant-filled-primary">
Download

View File

@ -5,7 +5,7 @@
export let data: PageData;
const {
Content,
meta: { date, title, readingTime, cover_img }
meta: { date, title, readingTime, cover_img, author }
} = data as Required<PageData>;
</script>
@ -20,7 +20,8 @@
: null}
style={cover_img ? `background-image: url(/posts/${cover_img});` : ''}
>
<h1 class={`h1 ${cover_img ? 'text-white' : ''}`}>{title}</h1>
<h1 class={`h1 text-stroke ${cover_img ? 'text-white' : ''}`}>{title}</h1>
<h4 class={`h4 text-stroke text-gray-400`}>By {author}</h4>
<br />
<p class={cover_img ? 'text-gray-400' : ''}>{new Date(date).toDateString()}</p>
<p class={`mb-16 ${cover_img ? 'text-gray-400' : ''}`}>{readingTime?.text ?? ''}</p>

View File

@ -0,0 +1,5 @@
import { redirect } from "@sveltejs/kit";
export function load(){
redirect(301, "/downloads");
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB