20 | );
21 | }
--------------------------------------------------------------------------------
/submissions/StoreFlow/README.md:
--------------------------------------------------------------------------------
1 | Name: StoreFlow
2 |
3 | Description: Easy to use store management and receipt generator app for small stores.
4 |
5 | GitHub URL: https://github.com/ktshacx/StoreFlow/
6 |
7 | How did you build this: I used react native expo for that, first time using expo so i had to read lots of docs and watch some tutorials.
8 |
9 | How many hours did you spend on this: 8 hours
10 |
11 | Did you use #hack-hour to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/ZawC5aZN
14 |
15 | Ship URL: https://hackclub.slack.com/archives/C07UA18MXBJ/p1734807573124029
16 |
17 | Video Demo URL: https://cloud-70t0l400m-hack-club-bot.vercel.app/0img_1111.mp4
--------------------------------------------------------------------------------
/website/pages/api/submit.js:
--------------------------------------------------------------------------------
1 | import Airtable from "airtable";
2 | const base = new Airtable({ apiKey: process.env.AIRTABLE_API_KEY }).base(
3 | process.env.AIRTABLE_BASE_ID
4 | );
5 |
6 | export default async (req, res) => {
7 | try {
8 | base("Email Submissions").create([{ fields: { Email: req.body.email } }], (err) => {
9 | if (err) {
10 | console.error(err);
11 | return res.status(500).json({ error: "Something went wrong" });
12 | }
13 |
14 | return res.status(200).json({ message: "Email submitted" });
15 | });
16 | } catch (err) {
17 | console.error(err);
18 | return res.status(500).json({ error: "Something went wrong" });
19 | }
20 | };
21 |
--------------------------------------------------------------------------------
/submissions/FlyRight/README.md:
--------------------------------------------------------------------------------
1 | Name: FlyRight
2 |
3 | Description: This is app is the best
4 |
5 | GitHub URL: https://github.com/zeusyboy98/flyright
6 |
7 | How did you build this: I used react native with expo to build this app. I learnt over a few weeks from tutorials
8 |
9 | How many hours did you spend on this: around 100 hours
10 |
11 | Did you use wakatime to log your progress?: Partially
12 |
13 | Testflight link: https://testflight.apple.com/join/98nbpN31
14 |
15 | How many users on testflight?: Around 60
16 |
17 | Ship URL: [Slack Link](https://hackclub.slack.com/archives/C0M8PUPU6/p1743300863682619)
18 |
19 | Video Demo URL: [Demo Video](https://www.youtube.com/shorts/nOz2HGYVZSU)
20 |
--------------------------------------------------------------------------------
/submissions/Hackchat/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Hackchat
2 |
3 | **Description**: A free and open source AI client using ai.hackclub.com ;)
4 |
5 | **GitHub URL**: https://github.com/liamcharger/Hackchat
6 |
7 | **How did you build this**: With my very best friend, SwiftUI
8 |
9 | **Did you use Hakatime to log your progress?**: Yes
10 |
11 | **Testflight link**: https://testflight.apple.com/join/2jsT3MF8
12 |
13 | **How many users on testflight?**: 0
14 |
15 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1747086479048529
16 |
17 | **Video Demo URL**: [here](https://hc-cdn.hel1.your-objectstorage.com/s/v3/4007425608da19d495fe588cb497bfc54d80703c_screenrecording_05-12-2025_17-37-43_1.mp4)
18 |
--------------------------------------------------------------------------------
/submissions/IPMATVocab/README.md:
--------------------------------------------------------------------------------
1 | Name: IPMAT Vocab
2 |
3 | Github URL: https://github.com/shubhisroking/ipmat
4 |
5 | Description: IPMAT Vocab is a simple and effective app designed to help students preparing for the Integrated Program in Management Aptitude Test (IPMAT) build a strong vocabulary through flashcards, with progress tracking by day and week.
6 |
7 | How did you build this: I used expo and a bit of zustand for state management.
8 |
9 | Did you use wakatime to log your progress?: Yes
10 |
11 | Testflight link: https://testflight.apple.com/join/JwrMDbJ4
12 |
13 | How many users on testflight?: zero as of now
14 |
15 | Ship URL: N/A
16 |
17 | Video Demo URL: https://www.youtube.com/shorts/UksNQIquZ78
18 |
--------------------------------------------------------------------------------
/submissions/BurmAid/README.md:
--------------------------------------------------------------------------------
1 | Name: BurmAid
2 |
3 | Description: A burmese language learning app for beginners to the language, designed to have lessons from reading to speaking.
4 |
5 | GitHub URL: https://github.com/PhyoTP/BurmAid
6 |
7 | How did you build this: This was supposed to be my Swift Student Challenge submission, but unfortunately I didnt get in, but I was gonna publish it regardless so
8 |
9 | Did you use wakatime to log your progress?: No (iPad)
10 |
11 | Testflight link: https://testflight.apple.com/join/c5R4W2UE
12 |
13 | How many users on testflight?: 3 last checked
14 |
15 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1745247551905349
16 |
17 | Video Demo URL: https://youtu.be/5x60mO7cohk
18 |
--------------------------------------------------------------------------------
/website/components/Project.js:
--------------------------------------------------------------------------------
1 | export default function Testimonial({ image, name, author, link, description }) {
2 | return (
3 |
4 |
16 |
17 | );
18 | }
19 |
--------------------------------------------------------------------------------
/website/lib/fetcher.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | const API_SECRET_KEY = process.env.API_SECRET_KEY;
4 | console.log('API_SECRET_KEY:', API_SECRET_KEY);
5 |
6 | export default async function Fetcher(url, options = {}) {
7 | const headers = { ...(options.headers || {}) };
8 | if (API_SECRET_KEY) {
9 | headers.Authorization = `Bearer ${API_SECRET_KEY}`;
10 | }
11 |
12 | const res = await fetch(url, {
13 | ...options,
14 | headers
15 | });
16 |
17 | if (!res.ok) {
18 | const error = new Error('An error occurred while fetching the data.');
19 | error.info = await res.json();
20 | error.status = res.status;
21 | throw error;
22 | }
23 |
24 | return res.json();
25 | }
--------------------------------------------------------------------------------
/submissions/runway/README.md:
--------------------------------------------------------------------------------
1 | Name: Runway
2 |
3 | Description: Daily STEM in your pocket. Learn and compete with your friends! Featuring a leaderboard and a streak/points system.
4 |
5 | GitHub URL: https://github.com/byung806/runway
6 |
7 | How did you build this: Using React Native from scratch reading tons of documentation and stack overflow posts 😓
8 |
9 | How many hours did you spend on this: >100
10 |
11 | Did you use #arcade to log your progress?: No (oops)
12 |
13 | Testflight link: https://testflight.apple.com/join/ZSrzVEeb
14 |
15 | How many users on testflight?: 3 for now
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1723069580099059
18 |
19 | Video Demo URL: https://youtube.com/shorts/EPeAXCz9P_A?feature=share
20 |
--------------------------------------------------------------------------------
/submissions/InfiniLink/README.md:
--------------------------------------------------------------------------------
1 | **Name**: InfiniLink
2 |
3 | **Description**: This is the official iOS companion app for InfiniTime, the main firmware for the PineTime. I'm the maintainer of the app, and I thought I'd submit it here :)
4 |
5 | **GitHub URL**: https://github.com/InfiniTimeOrg/InfiniLink
6 |
7 | **How did you build this**: SwiftUI :)
8 |
9 | **Did you use Hakatime to log your progress?**: Yes
10 |
11 | **Testflight link**: https://testflight.apple.com/join/VX7E73Wt
12 |
13 | **How many users on testflight?**: 210
14 |
15 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1747405106965549
16 |
17 | **Video Demo URL**: https://hc-cdn.hel1.your-objectstorage.com/s/v3/3ad544309ec9cd53b953788fbb7d82bf550864db_screenrecording_05-16-2025_10-00-57_1.mp4
--------------------------------------------------------------------------------
/submissions/trash-incentive-app/README.md:
--------------------------------------------------------------------------------
1 | Name: Trash Incentive App (beta name was real-app)
2 |
3 | Description: This app rewards students for properly disposing of trash at school.
4 | Scan QR codes on trash bins, take a photo to verify, and earn points you can redeem for real rewards.
5 | It's a fun way to promote campus cleanliness and sustainability.
6 |
7 | GitHub URL: https://github.com/ScriptMasterX/real-app
8 |
9 | How did you build this: I built this with React Native + Expo
10 |
11 | Did you use wakatime to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/xEXRRq4C
14 |
15 | How many users on testflight?: 0
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1744067912688799
18 |
19 | Video Demo URL: https://www.youtube.com/shorts/kMyrXHkR9Y0
20 |
--------------------------------------------------------------------------------
/submissions/Readability/README.md:
--------------------------------------------------------------------------------
1 | Name: Readability (upadted version - 1.0.1)
2 |
3 | Description: This app helps to improve the efficiency of reading for people that are very slow at reading
4 |
5 | GitHub URL: https://github.com/JatinRakesh/readability
6 |
7 | How did you build this: I used Swift UI to build the app with Vision and other packages to help me construct this.
8 |
9 | How many hours did you spend on this: Around 2 months haha
10 |
11 | Did you use #arcade to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/SKJ6JDr3
14 |
15 | How many users on testflight?: around 7
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1729262902558359
18 |
19 | Video Demo URL: https://drive.google.com/file/d/1155myKm12g4__JVGvcrLlZ1PTiwUHult/view?usp=drive_link
20 |
--------------------------------------------------------------------------------
/submissions/QBMobile/README.md:
--------------------------------------------------------------------------------
1 | **Name**: QB Mobile
2 |
3 | **Description**: Allows you to practice quiz bowl questions on the go using the QB Reader API.
4 |
5 | **GitHub URL**: https://github.com/79t/mad
6 |
7 | **How did you build this**: I used React Native to build the app. I learned basic practices from school, and then did my own research on frameworks/libraries like Tamagui to make the app look nicer.
8 |
9 | **How many hours did you spend on this**: ~20 hr
10 |
11 | **Did you use #arcade to log your progress?**: No
12 |
13 | **Testflight link**: https://testflight.apple.com/join/e4nFVZnu
14 |
15 | **How many users on testflight?**: 1
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1725299137288049
18 |
19 | **Video Demo URL**: https://drive.google.com/file/d/1y-Y6s8-aZESwTSDsTPNY5t-MydO4xYUZ/view?usp=sharing
20 |
--------------------------------------------------------------------------------
/.github/workflows/auto-merge.yml:
--------------------------------------------------------------------------------
1 | name: Dependabot auto-merge
2 | on: pull_request
3 |
4 | permissions:
5 | contents: write
6 |
7 | jobs:
8 | dependabot:
9 | runs-on: ubuntu-latest
10 | if: ${{ github.actor == 'dependabot[bot]' }}
11 | steps:
12 | - name: Dependabot metadata
13 | id: metadata
14 | uses: dependabot/fetch-metadata@v1.1.1
15 | with:
16 | github-token: "${{ secrets.GITHUB_TOKEN }}"
17 | - name: Enable auto-merge for Dependabot PRs
18 | if: ${{contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'}}
19 | run: gh pr merge --auto --merge "$PR_URL"
20 | env:
21 | PR_URL: ${{github.event.pull_request.html_url}}
22 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
23 |
--------------------------------------------------------------------------------
/website/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | content: [
3 | "./pages/**/*.{js,ts,jsx,tsx}",
4 | "./components/**/*.{js,ts,jsx,tsx}",
5 | ],
6 | darkMode: "class",
7 | theme: {
8 | extend: {
9 | colors: {
10 | red: "#ec3750",
11 | "soft-white": "#FFFFFB",
12 | "hack-black": "#17171d",
13 | "hack-blue": "#338eda",
14 | "hack-green": "#33d6a6",
15 | "hack-orange": "#ff8c37",
16 | "hack-purple": "#8057ff",
17 | "hack-yellow": "#ffaf26",
18 | "hack-muted": "#7a787d",
19 | "hack-smoke": "#f5f5f7",
20 | },
21 | fontFamily: {
22 | garamond: ["VC Garamond", "Garamond", "serif"],
23 | sans: ["Phantom Sans", "system-ui", "sans-serif"],
24 | },
25 | },
26 | },
27 | variants: {
28 | extend: {},
29 | },
30 | plugins: [],
31 | };
32 |
--------------------------------------------------------------------------------
/submissions/Stampede/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Stampede
2 |
3 | **Description**: One place for all information about Northside including school events, student announcements, and athletics. Rather than looking at 5 different websites to stay updated or find what you are looking for, we do that for you and now you can just find it all here.
4 |
5 | **GitHub URL**: https://github.com/NCP-Stampede/northside-app
6 |
7 | **How did you build this**: I built it using flutter for the front-end. For the data scraping, I used python and set up a REST API for both to communicate.
8 |
9 | **Did you use Hakatime to log your progress?**: Yes
10 |
11 | **Testflight link**: https://testflight.apple.com/join/CU4v8VHw
12 |
13 | **How many users on testflight?**: 17
14 |
15 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1754707483642639
16 |
17 | **Video Demo URL**: https://youtu.be/gYQJUDSGqhw
18 |
--------------------------------------------------------------------------------
/website/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "perfect-next-theme",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start"
9 | },
10 | "dependencies": {
11 | "@googlemaps/google-maps-services-js": "^3.4.1",
12 | "airtable": "^0.12.2",
13 | "classnames": "^2.3.2",
14 | "framer-motion": "^11.5.4",
15 | "next": "^14.0.4",
16 | "next-themes": "^0.3.0",
17 | "react": "^18.0.0",
18 | "react-dom": "^18.2.0",
19 | "react-hook-form": "^7.51.5",
20 | "react-icons": "^5.0.1",
21 | "react-responsive-carousel": "^3.2.23",
22 | "react-wrap-balancer": "^1.1.0",
23 | "swr": "^2.2.1",
24 | "tailwind-merge": "^2.2.1"
25 | },
26 | "devDependencies": {
27 | "autoprefixer": "^10.4.15",
28 | "postcss": "^8.4.38",
29 | "tailwindcss": "^3.3.3"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/submissions/Whisk/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Whisk
2 |
3 | **Description**: Whisk is a recipe app. It has OCR, manual recipe entry, and even a grocery list function. All of its functions are unlimited and the app is completely free.
4 |
5 | **GitHub URL**: https://github.com/ayaangrover/whisk
6 |
7 | **How did you build this**: I used Swift UI to build the app.
8 |
9 | **Did you use Hakatime to log your progress?**: **Yes** - spent ~60 hours, 46 were tracked correctly because I did most of the coding in vscode and tested it in Xcode.
10 |
11 | **Testflight link**: https://testflight.apple.com/join/Jcx3r2KD
12 |
13 | **How many users on testflight?**: 4, plus a few who tried it on my laptop to give feedback.
14 |
15 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1751837157677529
16 |
17 | **Video Demo URL**: https://drive.google.com/file/d/1P62vBtWVc4t-D2Tp7Onw1VUPfQ5sHsUe/view?usp=sharing
18 |
--------------------------------------------------------------------------------
/submissions/Heracles/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Heracles
2 |
3 | **Description**: Heracles is a workout tracking app designed for weightlifters. One of my hobbies is going to the gym, and since I like to take a very scientific approach to it, I started using a lot of workout tracking apps. None of them met my requirements, so I decided to create my own.
4 |
5 | **GitHub URL**: https://github.com/upedd/heracles
6 |
7 | **How did you build this**: Built using SwiftUI, Swift Charts, and Swift Data after following the SwiftUI in 100 Days series.
8 |
9 | **Did you use wakatime to log your progress?**: Yes
10 |
11 | **Testflight link**: https://testflight.apple.com/join/6XyVctd3
12 |
13 | **How many users on testflight?**: Just me and my dad
14 |
15 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1745222916352199
16 |
17 | **Video Demo URL**: [https://youtu.be/5amEy09iYj4](https://youtu.be/5amEy09iYj4)
18 |
--------------------------------------------------------------------------------
/submissions/nexttravel/README.md:
--------------------------------------------------------------------------------
1 | **Name**: NextTravel
2 |
3 | **Description**: NextTravel lets users create a full trip plan including accomodations, attractions and things to do using an AI
4 |
5 | **GitHub URL**: https://github.com/Lorenzo0111/NextTravel
6 |
7 | **How did you build this**: I've already had experience with React Native in the past, I had the idea and so decided to build it.
8 | I used Expo with React Native Paper for the frontend and Hono with Prisma and PostgreSQL for the backend
9 |
10 | **How many hours did you spend on this**: 80 hours
11 |
12 | **Did you use #arcade to log your progress?**: Yes
13 |
14 | **Testflight link**: https://testflight.apple.com/join/wkhJXj9J
15 |
16 | **How many users on testflight?**: 3 for now
17 |
18 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1722276880524139
19 |
20 | **Video Demo URL**: https://youtube.com/shorts/hw4dx_f550Q?feature=share
21 |
--------------------------------------------------------------------------------
/submissions/HTasks/readme.md:
--------------------------------------------------------------------------------
1 | # iOS App Submissions
2 |
3 | ---
4 |
5 | **Name**: HTasks
6 |
7 | **Description**: HTasks is a task manager, but not just any task manager, it's a beautiful task manager. Add your tasks, with a due date with minute accuracy, and a Priority. Reach goals and complete achievements.
8 |
9 | **GitHub URL**: https://github.com/TheAppleUser1/HTasks
10 |
11 | **How did you build this**: I used my own knowledge and a bit of AI.
12 |
13 | **How many hours did you spend on this**: all of the versions included: around 40 hours
14 |
15 | **Did you use wakatime to log your progress?**: No.
16 |
17 | **Testflight link**: https://testflight.apple.com/join/9YTMQcpV
18 |
19 | **How many users on testflight?**: 26 Updated: April 7 12:20 GMT+2 CEST
20 |
21 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1743758751075719
22 |
23 | **Video Demo URL**: https://youtube.com/shorts/vcprtt2_ozM?si=h2oxouiL6k2sv3Dv
24 |
--------------------------------------------------------------------------------
/submissions/Sujud-iOS/README.md:
--------------------------------------------------------------------------------
1 | # Sujud by Muhammad Shah
2 |
3 | **Name**: Sujud
4 |
5 | **Description**: An opensource and privacy focused Islamic app with integrated, customisable Salah timings with built-in notification support for all five prayers, a Quran with Al-Afasy recitation and also translation and a modern, fun to use qibla compass.
6 |
7 | **GitHub URL**: https://github.com/Sujud-App/Sujud-iOS
8 |
9 | **How did you build this**: I used Swift UI to build the app. Did considerable research on calculation methods, how to implemen edge cases as well as what were the most requested features by users. App also features widgets!
10 |
11 | **How many hours did you spend on this**: 30ish hours not sure on total
12 |
13 | **Did you use #hack-hour to log your progress?**: No
14 |
15 | **Testflight link**: https://testflight.apple.com/join/4GZQ7QZo
16 |
17 | **How many users on testflight?**:
18 |
19 | **Video Demo URL**: https://streamable.com/fj8bxy
20 |
--------------------------------------------------------------------------------
/submissions/MediStock/README.md:
--------------------------------------------------------------------------------
1 | Name: MediStock
2 |
3 | Description: It's an easy-to-use modern medication stock management app. This app was designed with everybody in mind. It's UI makes it easy for everyone to use and understand. It has an incorporated barcode scanner, that's going to help you with keeping track of how much you have of everything.
4 |
5 | GitHub URL: [https://github.com/cooldude/recipe](https://github.com/bukvam/MediStock)
6 |
7 | How did you build this: I used TypeScript and JS and also for the first time Expo. Watched a lot of videos and read documentations.
8 |
9 | How many hours did you spend on this: 20+ hours
10 |
11 | Did you use wakatime to log your progress?: Mostly
12 |
13 | Testflight link: https://testflight.apple.com/join/NM7ezukQ
14 |
15 | How many users on testflight?: just me
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C07UA18MXBJ/p1738106570240529
18 |
19 | Video Demo URL: https://youtube.com/shorts/gPRjs95JjTI
20 |
--------------------------------------------------------------------------------
/submissions/busintime/README.md:
--------------------------------------------------------------------------------
1 | Name: BusInTime
2 |
3 | Description: An app that allows uses to track NYC MTA buses and monitor their stops to see when buses are coming. This is a cleaner version of the BusTime website that is provided by the MTA, which makes it easier for more people to consume this information.
4 |
5 | GitHub URL: https://github.com/the-eyesack/busintime-mobile
6 |
7 | How did you build this: This app was built using React Native, which I picked up quickly from my knowledge of standard React. It relies off the MTA API and a custom built backend to bypass CORS.
8 |
9 | How many hours did you spend on this: 14 hours
10 |
11 | Did you use #arcade to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/lh3Bjkn8
14 |
15 | How many users on testflight?: 10
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1720899766856529
18 |
19 | Video Demo URL: https://youtube.com/shorts/S2rt7Hss9sA?feature=share
20 |
--------------------------------------------------------------------------------
/submissions/guider/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Guider: How To?
2 |
3 | **Description**: Was watching a video about a how to land a plane, found it impossible for a layperson to memorise, decided to make an app with instant access to all kinds of emergency guides _completely offline_.
4 |
5 | **GitHub URL**: https://github.com/CodeWithShreyans/guider
6 |
7 | **How did you build this**: Used React Native with Expo and [NativewindUI](https://nativewindui.com). Went my usual route of learning by building with documentation and forums.
8 |
9 | **How many hours did you spend on this**: 40 hours
10 |
11 | **Did you use #arcade to log your progress?**: No
12 |
13 | **Testflight link**: https://testflight.apple.com/join/WFw8Sp9R
14 |
15 | **How many users on testflight?**: 15
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1719725979460399
18 |
19 | **Video Demo URL**: https://hackclub.slack.com/files/U04TEFE4JF7/F07A6QK3EJJ/rpreplay_final1719725750.mp4
20 |
--------------------------------------------------------------------------------
/submissions/Neurobits/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Neurobits
2 |
3 | **Description**:
4 |
5 | Neurobits is an AI-powered learning app that goes beyond normal brain training by creating personalized learning experiences. The app uses adaptive AI to craft customized learning paths and daily assignments fitting for every user's level of capability, interests, and goals, with immediate feedback and dynamic difficulty adjustment. It gives challenging content that adapts as you grow, making you learn more effectively and motivated.
6 |
7 | **GitHub URL**: https://github.com/hridaya423/neurobits
8 |
9 | **How did you build this**: I used Flutter to build the app
10 |
11 | **Did you use Hakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/1WWVCQus
14 |
15 | **How many users on testflight?**: 2
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1750442494827959
18 |
19 | **Video Demo URL**: https://youtu.be/9ZU1ijL3IJs
20 |
--------------------------------------------------------------------------------
/submissions/zipp/README.md:
--------------------------------------------------------------------------------
1 | Name: Zipp
2 | Description: It is reaction-time testing game with single-player and multiplayer modes. Players wait for a red circle to turn green and tap as fast as possible to record their reaction time. It also helps improve reflexes and reaction speed, making it useful for gamers, athletes, and anyone looking to enhance their response time.
3 | GitHub URL: https://github.com/HridayKadam/zippcider
4 | How did you build this: I used Swift UI to build the app. Followed a bunch of guides and tutorials online & then when I felt comfortable, started building my own version of the app.
5 | How many hours did you spend on this: around 20 hours
6 | Did you use wakatime to log your progress?: No (I still have to learn about setting it up on ipad)
7 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1738126855740889
8 | Video Demo URL: https://youtube.com/shorts/X3VDr5OqLF8?feature=share
9 | Testflight Url: https://testflight.apple.com/join/Ye96zBr1
10 |
--------------------------------------------------------------------------------
/submissions/quipsocial/README.md:
--------------------------------------------------------------------------------
1 | Name: Quip Social
2 |
3 | Description: Quip Social is ad-free, text only social media network. Thanks to Quip is text-only people shouldn't be addicted on it. Quip Social is the first social network which offers simple desgin and a bit of visionOS design style.
4 |
5 | GitHub URL: https://github.com/FBukovina/Quip-Quick-Post
6 |
7 | How did you build this: I used SwiftUI to build this app. I was watching a lot of YT videos before I started coding. I had there a few problems with Firebase decoding, but I successfully fixed them with help of AI.
8 |
9 | How many hours did you spend on this: Aroud 100 hours in total.
10 |
11 | Did you use wakatime to log your progress?: No
12 |
13 | Testflight link: https://testflight.apple.com/join/fPe1Av5Y
14 |
15 | How many users on testflight?: 72 invited, 30 active users
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1742493228289549
18 |
19 | Video Demo URL: https://youtu.be/ylf-yl_nkzA
20 |
--------------------------------------------------------------------------------
/submissions/GratefulTime/README.md:
--------------------------------------------------------------------------------
1 | Name: GratefulTime
2 |
3 | Description: GratefulTime is a digital gratitude journal featuring Apple sign-in, daily timed notifications, and the ability to log three gratitude items plus a writing prompt. It includes a calendar for reviewing entries, customizable unlock time and time zone settings, and AI-generated monthly summaries.
4 |
5 | GitHub URL: https://github.com/eesazahed/gratefulness-mobile
6 |
7 | How did you build this: I used React Native with Expo for the frontend. For the backend I used a Python Flask server with a Supabase Postgres database.
8 |
9 | Did you use Hakatime to log your progress?: Yes
10 |
11 | Testflight link: https://testflight.apple.com/join/w5VxMWcF
12 |
13 | How many users on testflight?: 2
14 |
15 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1747855129419979
16 |
17 | Video Demo URL: https://hc-cdn.hel1.your-objectstorage.com/s/v3/ce3747aeb4040dbc04c5917256ce613de9c66efa_rpreplay_final1747452884.mp4
18 |
--------------------------------------------------------------------------------
/submissions/README.md:
--------------------------------------------------------------------------------
1 | # iOS App Submissions
2 |
3 | Create a new directory in this folder with the name of your app. Inside the directory, create a markdown file with the name `README.md` and include the following details:
4 |
5 | ---
6 |
7 | **Name**: Cool Recipes
8 |
9 | **Description**: What is this app? How does it help you? What problem does it solve for you and your friends?
10 |
11 | **GitHub URL**: https://github.com/cooldude/recipe
12 |
13 | **How did you build this**: I used Swift UI to build the app. Followed a bunch of guides and tutorials online and then when I felt comfortable, started building my own version of the app.
14 |
15 | **Did you use Hakatime to log your progress?**: Yes / No
16 |
17 | **Testflight link**:
18 |
19 | **How many users on testflight?**:
20 |
21 | **Ship URL**: https://hackclub.slack.com/abc (URL of your slack post in the #ship channel on Hack Club Slack)
22 |
23 | **Video Demo URL**: [https://youtube.com/xyz](https://www.youtube.com/gxe)
24 |
--------------------------------------------------------------------------------
/submissions/DeptZap/README.md:
--------------------------------------------------------------------------------
1 | Name: DeptZap
2 |
3 | Description: We often face a problem about, not paying each other back and always having to remember our depts. We made an app which tracks who you owe and who owes you. You can even share it with your friend, that they know you wrote it up.
4 |
5 | GitHub URL: https://github.com/barnagoz/deptzap
6 |
7 | How did you build this: We made this app with one of my friends using React Native and Expo. We were experienced with javascript, so getting used to Expo was not that hard. When we faced some challanges or wanted to implement new features we watched some guides on youtube.
8 |
9 | How many hours did you spend on this: around 12 hours
10 |
11 | Did you use #arcade to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/e7KkQe1h
14 |
15 | How many users on testflight?: 9
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1724707051320139
18 |
19 | Video Demo URL: https://youtu.be/GBhhxPAwMyY
20 |
--------------------------------------------------------------------------------
/submissions/shelfie/README.md:
--------------------------------------------------------------------------------
1 | Name: Shelfie
2 |
3 | Description: Shelfie is a book management app that helps you keep track of what you’ve read and what you want to read. You can log books into your personal library, receive book recommendations, and share your reviews on the explore page for everyone to see.
4 |
5 | GitHub URL: https://github.com/mikidoodle/shelfie
6 |
7 | How did you build this: I used React Native with Expo. Didn't use any tutorials because it's fairly simple and I've had experience with it before, but I used the Expo website to get instructions on building the project to publish it.
8 |
9 | How many hours did you spend on this: 36 hours
10 |
11 | Did you use #arcade to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/cmfmEKkt
14 |
15 | How many users on testflight?: 5
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1723877576867399
18 |
19 | Video Demo URL: https://drive.google.com/file/d/1UtNvcda5fz7rnR7MkDFs7U3N-lE0vmDq/view?usp=sharing
20 |
--------------------------------------------------------------------------------
/submissions/spy/README.md:
--------------------------------------------------------------------------------
1 | **Name**: spy
2 |
3 | **Description**: Spy is a fast, cross platform social‑deduction party game. Players receive secret words, with support for custom topics, dynamic role assignment. Some players, who are the spies, do not get any word The goal of the game is to discover the imposter, or discover the word.
4 |
5 | **GitHub URL**: https://github.com/advayc/spy
6 |
7 | **How did you build this**: I used expo dev to build the app. Particularly it was built with TypeScript, Expo + React Native for iOS/Android. It uses Zustand for state, AsyncStorage for local persistence, and Expo/EAS for dev and builds. The website was simply built using basic htmlcss.
8 |
9 | **Did you use Hakatime to log your progress?**: Yes
10 |
11 | **Testflight link**: https://testflight.apple.com/join/3uU3VUfv
12 |
13 | **How many users on testflight?**: 3
14 |
15 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1757551950239889
16 |
17 | **Video Demo URL**: https://youtube.com/shorts/qFV35jB-5u8?feature=share
18 |
--------------------------------------------------------------------------------
/website/data/steps.js:
--------------------------------------------------------------------------------
1 | export const steps = [
2 | {
3 | heading: "Submit an app demo",
4 | description: "We'll help you get it on TestFlight.",
5 | link: "https://forms.hackclub.com/t/jALEZHqGE2us",
6 | primary: true,
7 | },
8 | {
9 | heading: "Build your app",
10 | description: "Flesh out your app even more and try to meet all the submission requirements.",
11 | },
12 | {
13 | heading: "Submit your app",
14 | description:
15 | "Make a pull request adding a folder with your app's name in the submissions folder.",
16 | link: "https://github.com/hackclub/cider-website#make-your-pr",
17 | primary: true,
18 | },
19 | {
20 | heading: "Recieve your Apple Developer Membership",
21 | description:
22 | "Receive $100 to buy an Apple Developer Membership",
23 | },
24 | {
25 | heading: "Publish your app on the App Store",
26 | description:
27 | "Publish your app on the App Store and give you a $50 apple gift card.",
28 | primary: true,
29 | },
30 | ];
31 |
--------------------------------------------------------------------------------
/submissions/NearFuture/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Near Future
2 |
3 | **Description**: Near Future is an app to track upcoming events. it shows a day counter, and events have colours, symbols and descriptions. Tick events off to mark them as completed. iCloud Sync to view and edit your saved events on all your devices. The app also has Widgets for your home screen.
4 |
5 | **GitHub URL**: https://github.com/neon443/NearFuture
6 |
7 | **How did you build this**: This app is built using Swift and SwiftUI, using UserDefaults and iCloud for persistence.
8 |
9 | **How many hours did you spend on this**: 44 hours
10 |
11 | **Did you use wakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/vyDSD33z
14 |
15 | **How many users on testflight?**: 23
16 |
17 | **Ship URL**: [high-seas-ships](https://hackclub.slack.com/archives/C07UA18MXBJ/p1735939681156479)
18 |
19 | **Video Demo URL**: [video](https://hc-cdn.hel1.your-objectstorage.com/s/v3/8b57bda340c163dea5b3b79bcfb8c3bf9200d5e6_clips25-04-04_09-52.mp4)
--------------------------------------------------------------------------------
/submissions/Pick Up Platform/README.md:
--------------------------------------------------------------------------------
1 | Name: Pick up app
2 |
3 | Description: This is a pick up app where you can discorder/find different restaurants and order items from them. You get also a interactive different order status(only works manual changes through database)
4 | Github URL: https://github.com/KhalilHen/pt_pick_up_platform/tree/main/lib
5 |
6 |
7 | How many hours did you spend on this: 31 hours (there were some issues I was wasting so much time on)
8 |
9 | Did you use #arcade to log your progress?: No i used hackatime
10 |
11 | Testflight link: https://testflight.apple.com/join/2yP5bBVR
12 |
13 | How many users on testflight?: Currently 1
14 |
15 | Ship URL: Can't find the ship it's been a while.
16 | Video Demo URL: https://youtu.be/7VZ7-YzpVqA
17 |
18 |
19 | *Extra notes i've also made a restaurant portal to accept orders see stats which is a other part of this application in seperate repo.
20 |
21 | Repo: https://github.com/KhalilHen/live-orders-app
22 | video: https://youtu.be/GQlqoRlYmBk
23 | hours: 19 hours
24 |
--------------------------------------------------------------------------------
/submissions/Congressional Debate Companion/README.MD:
--------------------------------------------------------------------------------
1 | Name: Congressional Debate Companion
2 |
3 | Description: This year, I began competing in Congressional Debate. I absoluetly loved it, but there were no tools online that provided features that a Congressional Debate competitior would love. For this reason, I build Congressional Debate Companion, which has a plethora of features for those wanting to compete in Congressional Debate.
4 |
5 | GitHub URL: https://github.com/pizzalover125/CongressionalDebateCompanion
6 |
7 | How did you build this: I used Flutter to build the app and asked the #cider community when I needed help.
8 |
9 | How many hours did you spend on this: 15 hours
10 |
11 | Did you use wakatime to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/x5yqZGMN
14 |
15 | How many users on testflight?: 0
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1735789251197149
18 |
19 | Video Demo URL: https://youtu.be/92FTPFfvx18
20 |
21 | Video Demo URL v2: https://youtu.be/yseop11u5Uc
22 |
--------------------------------------------------------------------------------
/submissions/Flashback/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Flashback
2 |
3 | **Description**: Flashback is a social networking app that gives daily prompts to spark memories and inspire posts that can be shared with a close network of friends and family. I wanted to design a social media more personal than others, with greater privacy over who can see your posts. Additionally I wanted a way to share old memories with friends and remind myself and others of past memories that may have been forgotten in a shared journaling like way.
4 |
5 | **GitHub URL**: https://github.com/conniepocky/journaling-app
6 |
7 | **How did you build this**: I used Swift UI to build the app, using prior knowledge of programming combined with YouTube tutorials to improve my knwoledge of Swift and Xcode.
8 |
9 | **How many hours did you spend on this**: 60 hours
10 |
11 | **Did you use wakatime to log your progress?**: No
12 |
13 | **App Store link**: https://apps.apple.com/us/app/flashback-share-the-moment/id6739185801
14 |
15 | **Video Demo URL**: https://www.youtube.com/watch?v=zNrr5NqFSaQ
16 |
--------------------------------------------------------------------------------
/submissions/Quicklist/README.md:
--------------------------------------------------------------------------------
1 | Name: Quicklist
2 |
3 | Description: QuickList is a cross-platform mobile application built with React Native and
4 | Expo that provides intuitive tools to manage your tasks and shopping lists in
5 | one place. The app features a clean user interface, real-time updates via
6 | Supabase, and a seamless user experience.
7 |
8 | GitHub URL: https://github.com/iamfrerot/quicklist
9 |
10 | How did you build this: Using react native and supabase as backend
11 |
12 | How many hours did you spend on this: more than 100 hours
13 |
14 | Did you use #arcade to log your progress?: Using waka.hackclub.com
15 |
16 | Testflight link: [testflight](https://testflight.apple.com/join/PymReHKB)
17 |
18 | How many users on testflight?: around 4
19 |
20 | Ship URL: [https://hackclub.slack.com/archives/C0M8PUPU6/p1724640168506099](https://hackclub.slack.com/archives/C0M8PUPU6/p1744753868047939)
21 |
22 | Video Demo URL: [demo video](https://hc-cdn.hel1.your-objectstorage.com/s/v3/e31430a0907310119556be4fa44ff3cb63d1cc1b_rpreplay_final1744753263.mp4)
23 |
--------------------------------------------------------------------------------
/submissions/Maple-iOS/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Maple-iOS
2 |
3 | **Description**: A music player that plays files you keep locally on your phone. Comes with a robust social functionality that allows you to see what your friends are listening to.
4 |
5 | **GitHub URL**: https://github.com/HammerPot
6 |
7 | **How did you build this**: This is a SwiftUI app, and I used various documentation and experience from other type-based languages to create this app.
8 |
9 | **Did you use Hakatime to log your progress?**: Yes: 
10 |
11 |
12 | **Testflight link**: https://testflight.apple.com/join/YXZVrhnC
13 |
14 | **How many users on testflight?**: 5
15 |
16 | **Ship URL**: [https://hackclub.slack.com/archives/C0M8PUPU6/p1750788464315659](https://hackclub.slack.com/archives/C0M8PUPU6/p1750788464315659)
17 |
18 | **Video Demo URL**: [https://play.maple.music/SMS/uploads/ScreenRecording_06-24-2025%2013-55-07_1.mp4](https://play.maple.music/SMS/uploads/ScreenRecording_06-24-2025%2013-55-07_1.mp4)
19 |
--------------------------------------------------------------------------------
/submissions/Velox/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Velox
2 |
3 | **Description**: It is an app designed with games to improve mental math skills. The idea originated from a two-year project for my school's math event. Initially, it was a game where users guessed numbers based on provided clues. Over time, it evolved into a React app, and now it has been further upgraded into a full-fledged app with enhanced features.
4 |
5 | **GitHub URL**: https://github.com/NotARoomba/Velox
6 |
7 | **How did you build this**: I used Expo and React Native for the frontend, Supabase for the backend, and NativeWind for styling.
8 |
9 | **How many hours did you spend on this**: ~36 hours
10 |
11 | **Did you use wakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/asvFTt9T
14 |
15 | **How many users on testflight?**: Just Me (for now)
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1737918582419549
18 |
19 | **Video Demo URL**: [Google Drive](https://drive.google.com/file/d/1Tmj0cSSpDHZoLX3O29ESJ5eX6k5u4PdZ/view?usp=sharing)
20 |
--------------------------------------------------------------------------------
/submissions/DeCodeIt/README.MD:
--------------------------------------------------------------------------------
1 | Name: DeCodeIt
2 |
3 | Description: All the Languages, one app. Decode any text into Morse, Binary and other languages! Connect with friends, create posts, share your coding experience. All in one tech news app. Get access to early preview DexAI! Available soon.
4 |
5 | GitHub URL: https://github.com/Chrissshere/DeCoder/
6 |
7 | How did you build this: I used SwiftUI, Firebase, Youtube, and some AI Help to fix bugs into the app. Took restoring 3 archived versions due to issues, and code bugs, NSExceptions, and etc. Around a week or two of development.
8 |
9 | How many hours did you spend on this: over 52 hours
10 |
11 | Did you use #hackatime to log your progress?: Yes, but not fully.
12 |
13 | Testflight link: https://testflight.apple.com/join/Qbg11rdp
14 |
15 | How many users on testflight?: 240 Verified Firebase users, 435 Testers in Testflight, 458 Accepted, 616 Views.
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C01504DCLVD/p1743670021679179
18 |
19 | Video Demo URL: https://youtube.com/shorts/JGGTa6F6p5k?feature=share
20 |
--------------------------------------------------------------------------------
/submissions/EmojiUtils/README.md:
--------------------------------------------------------------------------------
1 | **Name**: EmojiUtils
2 |
3 | **Description**: EmojiUtils is an app that makes working with hashes more visual and engaging by using emojis. It also features an identities tab, allowing users to verify their identity through an emoji-generated code.
4 |
5 | **GitHub URL**: https://github.com/Nichokas/EmojiUtils
6 | (and Nichokas/EmojiUtils-server)
7 |
8 | **How did you build this**: The app was developed using SwiftUI for the frontend (app) and Rust with Actix_web on Nest for identity management.
9 |
10 | **How many hours did you spend on this**: 17 hours
11 |
12 | **Did you use #hack-hour to log your progress?**: No
13 |
14 | **Testflight link**: https://testflight.apple.com/join/xM9GDXS8
15 |
16 | **How many users on testflight?**: 2
17 |
18 | **Ship URL**: [https://hackclub.slack.com/abc (URL of your slack post in the #ship channel on Hack Club Slack)](https://hackclub.slack.com/archives/C0M8PUPU6/p1735138777885049)
19 |
20 | **Video Demo URL**:
21 |
22 | https://github.com/user-attachments/assets/f6f861f8-19b9-46d8-b988-97ee046efca1
23 |
--------------------------------------------------------------------------------
/submissions/booklove/README.md:
--------------------------------------------------------------------------------
1 | Name: booklove.
2 |
3 | Description: It's a social book list, allowing you to store your favorite books, discover new ones and find people who read like you do.
4 |
5 | GitHub URL: https://github.com/MoPaMo/booklove
6 |
7 | How did you build this: I designed all pages in Figma first, then realized them in SwiftUI (which took waaay longer then expected). I am using a Heroku dyno and postgres through the GitHub Education benefits, with a NodeJS server. New books are fetched from OpenLibrary, and stored in the postgres database. This was my first Swift project, so I had to look a lot of stuff up (love goes out to hackingwithswift.com)
8 |
9 | How many hours did you spend on this: 79 😢
10 |
11 | Did you use #arcade to log your progress?: Yes
12 |
13 | Testflight link:https://testflight.apple.com/join/kiTP6TBZ
14 |
15 | How many users on testflight?: 10 (fayd said it's ok)
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1721688573540259
18 |
19 | Video Demo URL: [https://youtube.com/xyz](https://www.youtube.com/watch?v=p1bq0eXOgCA)
20 |
--------------------------------------------------------------------------------
/submissions/usider/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Usider
2 |
3 | **Description**: It is a productivity app which blends relaxing visuals which keep changing with sofi,ambience,lo-fi music to create a relaxing feel.
4 | the current demand for lo-fi music in youtube is very high. so this app not only integrate that but with bunch of features it boost productivity.
5 |
6 | **GitHub URL**: https://github.com/Tech-with-anmol/usider
7 |
8 | **How did you build this**: I built this using react native and expo. I, for most part used official docs and few videos(rarely). And i mostly developed the app and learnt the react native at same time.
9 |
10 | **How many hours did you spend on this**: 30 hours
11 |
12 | **Did you use #hack-hour to log your progress?**: No, i used wakatime
13 |
14 | **Testflight link**: https://testflight.apple.com/join/XHuWtuxe
15 |
16 | **How many users on testflight?**: 2
17 |
18 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1735279648025579
19 |
20 | **Video Demo URL**: https://drive.google.com/file/d/1ptkx76OLODoy7qODd6Eov6Ihwql-TrH4/view?usp=drive_link
21 |
--------------------------------------------------------------------------------
/submissions/waffle/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Waffle
2 |
3 | **Description**: Waffle is a group chat app. It is end-to-end encrypted, uses firebase's secure protocols to ensure user data is safe, and uses google to sign in.
4 |
5 | **GitHub URL**: https://github.com/ayaangrover/waffle
6 |
7 | **How did you build this**: I used SwiftUI to build the app. This is my second app in swift/swiftui. The first one I used tutorials and AI to understand, but for Waffle the code is entirely my own.
8 |
9 | **How many hours did you spend on this**: 15
10 |
11 | **Did you use #arcade to log your progress?**: Yes
12 |
13 | **Testflight link**: [https://testflight.apple.com/join/XWN8vytA](https://testflight.apple.com/join/XWN8vytA)
14 |
15 | **How many users on testflight?**: 8 users have used my app. Not all of them remain testers, some wanted to be removed. I'm not sure why.
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1724640168506099
18 |
19 | **Video Demo URL**: [Google Drive video link]([url](https://drive.google.com/file/d/1iaLhxWsecGlgYKz9Lmx7lLov1CQO3xOZ/view?usp=sharing))
20 |
--------------------------------------------------------------------------------
/submissions/quench/README.MD:
--------------------------------------------------------------------------------
1 | Name: **Quench** - Water Tracker
2 |
3 | Description:
4 | Looking for a fun and engaging way to stay hydrated? Introducing Quench the water tracking app with a gamified twist!
5 |
6 | Every time you log your water intake, you earn points. Use those points to buy items from the shop or collect seeds to grow plants in your personal garden. Seeds come in different types and rarities, making each garden unique.
7 |
8 | Satisfy your thirst and grow your own garden!
9 |
10 | GitHub URL: https://github.com/bisher-almasri/quench
11 |
12 | How did you build this: I originally started with swift via tutorials and docs, then i decided to switch to expo since i have experience with it after having issues with charts in swift.
13 |
14 | Did you use Hakatime to log your progress?: Yes
15 |
16 | Testflight link: https://testflight.apple.com/join/dGkuZjg6 (might not work due to in review)
17 |
18 | How many users on testflight?:1
19 |
20 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1756518249054629
21 |
22 | Video Demo URL: https://youtube.com/shorts/EybiK3H9iqw
23 |
--------------------------------------------------------------------------------
/submissions/Productite/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Productite
2 |
3 | **Description**: Productite is an app designed to help users manage their time efficiently.
4 | The app provides a user-friendly interface for adding, viewing, and analyzing how you spend your time through various features such as pie charts and history,
5 | and additionally a clean todo list to know what you need to get done.
6 |
7 | **GitHub URL**: https://github.com/darshg321/Productite
8 |
9 | **How did you build this**: I started this app during Hackclub Arcade in the summer, and used Expo because I wanted my app to be cross platform. I learned most expo specific content from the docs and youtube videos.
10 |
11 | **How many hours did you spend on this**: 35+ hours
12 |
13 | **Did you use #hack-hour to log your progress?**: I used Hackclub Arcade when it was running
14 |
15 | **Testflight link**: https://testflight.apple.com/join/pq32VSNY
16 |
17 | **How many users on testflight?**: 4
18 |
19 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1735599320143919
20 |
21 | **Video Demo URL**: https://youtu.be/r5GSeHV0ssM
22 |
--------------------------------------------------------------------------------
/submissions/ESP32 App/README.md:
--------------------------------------------------------------------------------
1 | **Name**: ESP32 Interface
2 |
3 | **Description**: This app is meant to be an easy way to interact with an ESP32 device. It communicates through Bluetooth, some of the features include: getting and graphing data from altimeters and IMUs, controlling buzzers and individual pins, and controlling servo positions through sliders or your phone's orientation.
4 |
5 | **GitHub URL**: [https://github.com/cooldude/recipe](https://github.com/usedgenes/ESP-32-Interface)
6 |
7 | **How did you build this**: I used Swift UI to build the app. First I looked at other bluetooth ios apps to get started on my own bluetooth feature, and then used online resources for any problems I encountered such as graphing data.
8 |
9 | **How many hours did you spend on this**: 70 hours
10 |
11 | **Did you use #arcade to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/j8z2C6v4
14 |
15 | **How many users on testflight?**: 2
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C073DTGENJ2/p1723582806051829
18 |
19 | **Video Demo URL**: https://www.youtube.com/watch?v=iQNbo4a35-I
20 |
--------------------------------------------------------------------------------
/submissions/StudyQuest/README.MD:
--------------------------------------------------------------------------------
1 | **Name:** StudyQuest – Productivity App
2 |
3 | **Description**: I built this app because I saw a gap in productivity tools tailored for students and professionals. There were no apps that provided a seamless, structured way to manage tasks and optimize efficiency with a focus on usability. So, I created StudyQuest, a productivity app that includes a variety of features designed to help users stay organized, track progress, and maximize their workflow.
4 |
5 | **GitHub URL:** https://github.com/Mr-W-Squidward/studyquest
6 |
7 | **How did you build this:** I used React Native/Expo, TypeScript, and Tailwind CSS to develop the app. I also sought help from various developer communities when needed.
8 |
9 | **How many hours did you spend on this:** 25+ hours
10 |
11 | **Did you use WakaTime to log your progress?:** Yes
12 |
13 | **TestFlight link:** https://testflight.apple.com/join/kpvRXr7a (approval!)
14 |
15 | **How many users on TestFlight?:** 0
16 |
17 | **Ship URL:** https://hackclub.slack.com/archives/C01504DCLVD/p1738380887211979
18 |
19 | **Video Demo URL:** https://www.youtube.com/shorts/bN6b9tazljI
--------------------------------------------------------------------------------
/submissions/StudyFast/README.md:
--------------------------------------------------------------------------------
1 | **Name**: StudyFast!
2 |
3 | **Description**: StudyFast is an AI-powered learning assistant that provides instant, personalized tutoring across multiple subjects, right from your phone. It helps students understand difficult concepts quickly by offering clear, conversational explanations, guided learning paths, and progress tracking. I created it to make learning more accessible and efficient, so students can get the help they need anytime without waiting for a tutor
4 |
5 | **GitHub URL**: https://github.com/Ahmet-Dedeler/StudyFast
6 |
7 | **How did you build this**: Used React Native with Expo. For chatbot functionality, I used the OpenAI API. And utilized Bolt.new and also Cursor IDE to develop
8 |
9 | **How many hours did you spend on this**: ~20 hours
10 |
11 | **Did you use wakatime to log your progress?**: Nope
12 |
13 | **Testflight link**: https://testflight.apple.com/join/8uVETXHF
14 |
15 | **How many users on testflight?**: 1
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1741440737182099
18 |
19 | **Video Demo URL**: https://app.canvid.com/share/fi_01JNNQ1ZS5WQ55WKNTCNPN4EW6
20 |
--------------------------------------------------------------------------------
/submissions/Fremont High School/README.md:
--------------------------------------------------------------------------------
1 | Name: Fremont (Fremont High School)
2 |
3 | Description: What is this app? How does it help you? What problem does it solve for you and your friends?
4 |
5 | This is an app for my high school. it helps me and my friends at my hs by combining all the 3rd party tools my high school uses like final grades, schedule with countdown, and id card. It also includes a notification system for our student body and clubs
6 |
7 | GitHub URL: https://github.com/thedev132/fremont-app
8 |
9 | How did you build this: I used React Native to build the app. I already knew javascript very well and React. React Native (with Expo) wasnt much of a difference.
10 |
11 | How many hours did you spend on this: ~60 hours
12 |
13 | Did you use #arcade to log your progress?: Yes
14 |
15 | Testflight link: https://testflight.apple.com/join/7N5kR87u
16 |
17 | How many users on testflight?: Just me (users from my high school are going to join when deployed)
18 |
19 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1722627651773299
20 |
21 | Video Demo Link: https://drive.google.com/file/d/1p37eyR1Cb0vn5zM0FDEZEwDeuRFhVi_e/view?usp=drivesdk
22 |
--------------------------------------------------------------------------------
/submissions/Live Lyrics/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Live Lyrics
2 |
3 | **Description**: Live Lyrics is a songwriting/setlist manager for musicians. It was designed to be an easy way to organize setlists for gigs, or be your space to create new songs. You can easily share/collaborate on songs or folders with other users, create song variations (versions of songs for lyrics, chords, etc.), and manage what members get what variations by creating a band
4 |
5 | **GitHub URL**: https://github.com/liamcharger/live-lyrics-iOS
6 |
7 | **How did you build this**: Using SwiftUI and Firebase, with some of APIs such as Musixmatch and Datamuse
8 |
9 | **How many hours did you spend on this**: From WakaTime, 67+ hours. I would estimate ~250
10 |
11 | **Did you use WakaTime to log your progress?**: Yes, although I started the project long before I began using it.
12 |
13 | **Testflight link**: https://testflight.apple.com/join/8JW53Ysa
14 |
15 | **How many users on TestFlight?**: 5, ~2500 on the App Store
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1743196621836379
18 |
19 | **Video Demo URL**: https://cloud-hn8rp954s-hack-club-bot.vercel.app/0livelyricsdemo.mp4
20 |
--------------------------------------------------------------------------------
/website/data/requirements.js:
--------------------------------------------------------------------------------
1 | export const requirements = [
2 | "Your app must be open-source, original, unique & built using React Native, SwiftUI or Flutter",
3 | "You must have dedicated at least 40 hours to building the app. This is a minimum requirement.",
4 | "It is required to use hackatime to log your progress while building the app.",
5 | "The app should solve a real problem or add significant value to the users' lives. Describe how the app will impact its users and what specific issues it addresses.",
6 | "The app should have at least five unique screens (e.g., home, profile, settings, notifications, and a feature-specific screen).",
7 | "The app must include at least three core features that work together to create a cohesive experience. For example, a social network app could include user profiles, a news feed, and direct messaging.",
8 | "The app must have some sort of data management system, using either local storage, cloud databases, or APIs.",
9 | "The app could involve integrating with external APIs, or using advanced features of React Native, Swift, or Flutter.",
10 | "The app should have a clean, user-friendly design that is easy to navigate and visually appealing.",
11 | ];
12 |
--------------------------------------------------------------------------------
/submissions/Addiction Free/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Addiction Free
2 |
3 | **Description**: This app is more than just a nice addition to your life; it is intended for use in helping you to overcome addiction. It provides inspirational quotes every hour to help you stay motivated. If you want, you can log your progress in an easy manner, and a streak counter will be there to keep you pumped up with motivation for all your hard work.
4 |
5 | **GitHub URL**: [Addiction Free Github](https://github.com/bbarni2020/Addiction-app/tree/main/Addiction%20Free)
6 |
7 | **How did you build this**: I used Swift UI to build the app, in Xcode. Thanks to Stewart Lynch for Date extension, that helped me a lot.
8 |
9 | **How many hours did you spend on this**: 31 hours (there were some issues I was wasting so much time on)
10 |
11 | **Did you use #arcade to log your progress?**: Yes (only 24 of it)
12 |
13 | **Testflight link**: [Download beta](https://testflight.apple.com/join/eUdFPPSF)
14 |
15 | **How many users on testflight?**: 1
16 |
17 | **Ship URL**: [Ship message URL](https://hackclub.slack.com/archives/C01504DCLVD/p1724849437754499)
18 |
19 | **Video Demo URL**: [Youtube](https://youtu.be/xlinS3cq34w?si=iDaP-1qAdoz7yN1Q)
20 |
--------------------------------------------------------------------------------
/submissions/SpendSmart/README.md:
--------------------------------------------------------------------------------
1 | Name: SpendSmart
2 |
3 | Description: SpendSmart makes saving receipts and tracking your budget effortless with the power of AI. Unlike most receipt managers, SpendSmart requires only a photo of your receipt to log a new expense. It automatically extracts key information, categorizes purchases intelligently, and presents everything in a beautifully designed interface.
4 |
5 | GitHub URL: https://github.com/madebyshaurya/SpendSmart
6 |
7 | How did you build this: This app is a native SwiftUI application. I have used Google Gemini for the AI. Logo API's for fetching company logos. Supabase as the authentication and backend. Sign in with Apple as one of the authentication methods.
8 |
9 | Did you use wakatime to log your progress?: Yes
10 |
11 | Testflight link: https://testflight.apple.com/join/2hRcRhZJ
12 |
13 | How many users on testflight?: Shared the link an hour ago so people are still joining but 6 currently.
14 |
15 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1744847503584989
16 |
17 | Video Demo URL: https://hc-cdn.hel1.your-objectstorage.com/s/v3/2864e4fec6406cb2113e8f58d682a9ac892c2f80_simulator_screen_recording_-_iphone_16_pro_-_2025-04-04_at_09.15.39.mp4
18 |
--------------------------------------------------------------------------------
/submissions/pensieve/README.md:
--------------------------------------------------------------------------------
1 | # Pensieve
2 |
3 | **Name**: Pensieve
4 |
5 | **Description**: Pensieve is a reminder/braindump tool. There have been too many instances when I have a really cool idea or something I need to remember, but taking something out and writing it down neatly would be impractical at the moment. I created Pensieve to utilize AI to solve that problem. You open the app to a giant microphone icon that will use OpenAI Whisper to transcribe your idea, then use GPT-4o to formalize it into an actual reminder.
6 |
7 | **GitHub URL**: https://github.com/hyusap/pensieve
8 |
9 | **How did you build this**: I used Expo/React Native to build the app. I didn't really follow many tutorials, I basically just used my webdev react knowledge to put stuff together.
10 |
11 | **How many hours did you spend on this**: 7-10 hours
12 |
13 | **Did you use #hack-hour to log your progress?**: No
14 |
15 | **Testflight link**: https://testflight.apple.com/join/SCH8Un2P
16 |
17 | **How many users on testflight?**: NA
18 |
19 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1717874888396789
20 |
21 | **Video Demo URL**: https://hackclub.slack.com/files/U02GHNT70TB/F0771679ULE/rpreplay_final1717874595.mp4
22 |
--------------------------------------------------------------------------------
/submissions/TrackCount/README.md:
--------------------------------------------------------------------------------
1 | **Name**: TrackCount
2 |
3 | **Description**: This app keeps track of thing with (currently) counters and toggles. This can help in situations like keeping scores for your team games, visualize your to-do list and many more. It solved my problem for a need for something that can keep count, multiple at that, and in a way that was digital and easy to manage, and TrackCount does just that.
4 |
5 | **GitHub URL**: https://github.com/Somebud0180/TrackCount
6 |
7 | **How did you build this**: I used Swift UI to build the app. I started with my background knowledge for the base of the app, I then moved on making it editable and followed a few guides online and most notably learned with the resources from Apple's Developer website. In the long term the online guides did help me get far along the way.
8 |
9 | **How many hours did you spend on this**: 69~ hours
10 |
11 | **Did you use wakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/P8fadwdF
14 |
15 | **How many users on testflight?**: 2
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1736087241460799
18 |
19 | **Video Demo URL**: https://youtube.com/shorts/Z-IfiEDiRZg
20 |
--------------------------------------------------------------------------------
/submissions/Impact tracker/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Impact tracker
2 |
3 | **Description**: An app that allows you to track the things you've been doing that have an impact on the environment so you can be more conscious of your decisions and become more sustainable.
4 |
5 | **GitHub URL**: https://github.com/Hibernathan1212/Impact-tracker
6 |
7 | **How did you build this**: I used SwiftUI to create the app. I watched some videos on SwiftUI and Swift which I used to learn the language and different features. I then created my app from my understanding and knowledge of the language
8 |
9 | **How many hours did you spend on this**: 14 hours
10 |
11 | **Did you use wakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: [https://testflight.apple.com/join/MPTAetYR](https://testflight.apple.com/join/MPTAetYR)
14 |
15 | **How many users on testflight?**: 1
16 |
17 | **Ship URL**: [https://hackclub.slack.com/archives/C07UA18MXBJ/p1736252182624539](https://hackclub.slack.com/archives/C07UA18MXBJ/p1736252182624539)
18 |
19 | **Video Demo URL**: [https://cloud-kbt8w4d18-hack-club-bot.vercel.app/0screenrecording_01-07-2025_19-04-52_1.mp4](https://cloud-kbt8w4d18-hack-club-bot.vercel.app/0screenrecording_01-07-2025_19-04-52_1.mp4)
20 |
--------------------------------------------------------------------------------
/submissions/daydream/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | ## Name: Daydream
4 | **Description**:
5 | Daydream is an emotional reflection assistant that helps users process and reflect on their daily thoughts and feelings. Users write unfiltered journal entries, and Daydream responds with thoughtful AI-generated reflections, insights, and encouragement. .
6 |
7 | GitHub URL: https://github.com/Shrit1401/Daydream
8 |
9 | **How did you build this:**
10 | I built Daydream using modern web technologies and the Hack Club API. App is Made with Flutter, I started with tutorials and gradually built out the system to support AI reflections, data visualizations, and story generation.
11 |
12 | Did you use Hakatime to log your progress?: Yes
13 |
14 | Testflight link: https://testflight.apple.com/join/ApXMU3VV
15 |
16 | How many users on TestFlight?: - Currently One
17 | **How many hours did you spend on this**: 40+ hours
18 |
19 | **Website**: http://daydream.shrit.in/
20 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1747690823975419
21 |
22 | Video Demo URL: https://www.loom.com/share/4b1f3c8e9b6a4b9fa0931363cce87704?sid=bf08759f-3dd7-45c4-b967-6e0a642c43e1
23 |
--------------------------------------------------------------------------------
/submissions/Quotecabulary/README.md:
--------------------------------------------------------------------------------
1 | Name: Quotecabulary
2 |
3 | Description: This app helps students study for the SAT by providing a daily vocabulary word, an archive of past words which can be filtered to only show the users favorites, as well as a space to save words that are found when studying. SAT vocabulary is best studied incrementally which is why this app would help students significantly.
4 | Additionally, there is a quotes feature with motivational quotes by a chosen famous person and a place to store your favorite quotes, whether they be your own quotes or things that your friends/family said. It also includes a widget of the daily word so that the word is more visible to the user.
5 |
6 | GitHub URL:https://github.com/lycheegreentea/Reverie
7 |
8 | How did you build this: I followed XCode/Swift tutorials from the apple website then started to build this app. AI was used to generate the word list.
9 |
10 | Did you use Hakatime to log your progress?: Yes
11 |
12 | Testflight link:https://testflight.apple.com/join/G7UsxkSF
13 |
14 | How many users on testflight?:1
15 |
16 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1751574481985959
17 |
18 | Video Demo URL: https://youtube.com/shorts/fegR9TrF_to?feature=share
19 |
--------------------------------------------------------------------------------
/submissions/Hookd/README.md:
--------------------------------------------------------------------------------
1 | **Name:** Hookd
2 |
3 | **Description:** This app is for fishing, more specifically, for detecting bobbers. When you're fishing, you can just leave your phone facing your bobber, open Hookd and start streaming. Then, you can do something else while Hookd watches over your bobber. When Hookd doens't detect your bobber anymore, it sends a notification to your phone and starts beeping to alert you. This fixes the problem of boredom while fishing, and allows you to do other things instead of staring at a bobber for hours at a time.
4 |
5 | **GitHub URL:** https://github.com/B-Eddie/ObjectDetectionAppExpo
6 |
7 | How did you build this: I used React Native, followed TheScientist101's tutorial to deploy it, and chatgpt for bug fixing
8 |
9 | How many hours did you spend on this: Around 20 hours, but a bunch didn't get approved because my bug fixing didn't look like I did 1 hour 😭
10 |
11 | Did you use #arcade to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/FfS1Zjnw
14 |
15 | How many users on testflight?: 1 😭
16 |
17 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1723305292058649
18 |
19 | Video Demo URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1723305292058649
20 |
--------------------------------------------------------------------------------
/submissions/SpaceSync/README.md:
--------------------------------------------------------------------------------
1 | Name: SpaceSync
2 |
3 | Description: It simplifies collaboration by allowing the easy sending of announcements into a workspace. Additionally, it includes an inbuilt To-Do-List where individuals can add tasks and receive reminders 1 hour before their due date. There is also SpaceSync AI which is a powerful AI to use.
4 | It is a simplr and easy to use app which is completely free
5 |
6 | GitHub URL: [https://github.com/jay-lchicken/SpaceSyncApp](https://github.com/jay-lchicken/SpaceSyncApp)
7 |
8 | How did you build this: I used Swift UI and Swift to build the app. I followed tutorials from iOS Academy
9 |
10 | How many hours did you spend on this: 5 hours
11 |
12 | Did you use wakatime to log your progress?: No
13 |
14 | App Store link: [https://apps.apple.com/sk/app/spacesync/id6498710377](https://apps.apple.com/sk/app/spacesync/id6498710377)
15 |
16 | Ship URL: [https://hackclub.slack.com/archives/C0M8PUPU6/p1736122421106419](https://hackclub.slack.com/archives/C0M8PUPU6/p1736122421106419)
17 |
18 | Video Demo URL: [https://www.icloud.com/iclouddrive/059B1r--f_BCyBIuLMX07LNJg#ScreenRecording_01-06-2025_07-09-38_1](https://www.icloud.com/iclouddrive/059B1r--f_BCyBIuLMX07LNJg#ScreenRecording_01-06-2025_07-09-38_1)
19 |
--------------------------------------------------------------------------------
/website/components/Meta.js:
--------------------------------------------------------------------------------
1 | import Head from 'next/head';
2 |
3 | export default function MetaData({
4 | title = "Hack Club - Cider",
5 | description = "Design, Code, and Ship an iOS app to the App Store in 30 days with Hack Club's Cider program. Get a $100 grant for an Apple Developer Membership!",
6 | image = "https://cider.hackclub.com/banner.png",
7 | url = "https://cider.hackclub.com",
8 | children
9 | }) {
10 | const fullTitle = title === "Hack Club - Cider" ? title : `${title} | Hack Club Cider`;
11 |
12 | return (
13 |
14 | {fullTitle}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | {children}
27 |
28 | );
29 | }
--------------------------------------------------------------------------------
/submissions/local-sites-viewer/README.md:
--------------------------------------------------------------------------------
1 |
2 | **Name**: Local Sites Viewer
3 |
4 | **Description**:
5 | It is a simple tool for web developers to quickly test their local websites on
6 | other devices, like phones or tablets, connected to the same network.
7 |
8 | Instead of typing your IP and port every time, this app does it for you. It detects your local IP,
9 | scans active ports, and shows you a list of working local sites.
10 |
11 | **GitHub URL**: https://github.com/MohammedMMC/Local-Sites-Viewer-RN
12 |
13 | **How did you build this**: I used React Native to build the app. Followed a bunch of [guides](https://reactnative.dev/docs/getting-started) and [tutorials](https://www.youtube.com/playlist?list=PL4cUxeGkcC9ixPU-QkScoRBVxtPPzVjrQ) online and then when I felt comfortable, started building my own version of the app.
14 |
15 | **How many hours did you spend on this**: around 24 hours
16 |
17 | **Did you use #hack-hour to log your progress?**: No :'( I used wakatime
18 |
19 | **Testflight link**: https://testflight.apple.com/join/3vqA1Xeg
20 |
21 | **How many users on testflight?**: 2
22 |
23 | **Ship URL**: i didn't ship it yet, i want to know if i should add or edit anything to the app
24 |
25 | **Video Demo URL**: https://youtu.be/zqD8N8jFHrk
26 |
--------------------------------------------------------------------------------
/submissions/Multicards/README.md:
--------------------------------------------------------------------------------
1 | Name: Multicards
2 |
3 | Description: An app where flashcards break the laws of phyisics and go multi-dimensional. On each side, you can have different items (question, answer, meaning, etc) and then test yourself on different sides without making a completely separate card set of the same thing. Share your sets with the world or keep them in your library to use them offline. The debut app of PhyoID, a user management system.
4 |
5 | GitHub URL: https://github.com/PhyoTP/Multicards
6 |
7 | How did you build this: I first had to figure out how to make a public database for the app using flask and sqlite, and also had to make a user management system with those and JWT. After that, I had to figure out how to make an api call from the app, store the user data in app so that it worked offline, Make set creation, editing and deletion, and finally the actual gameplay.
8 | How many hours did you spend on this: 63 hours
9 |
10 | Did you use #arcade to log your progress?: For the first 50-60 hours
11 |
12 | Testflight link: https://testflight.apple.com/join/2cKSFyHY
13 |
14 | How many users on testflight?: 17
15 |
16 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1726838268983319
17 |
18 | Video Demo URL: https://youtu.be/KrTed99kvlQ
19 |
--------------------------------------------------------------------------------
/submissions/StudyPlayProfit/README.md:
--------------------------------------------------------------------------------
1 | Name: StudyPlayProfit
2 |
3 | Description: StudyPlayProfit is a game app aimed at making study more fun! Studying gets you tickets and diamonds which you can spend on games to earn more diamonds or to pull for boosts that will increase various aspects of the game! This project was made using React Native and Expo, which is a framework that allows for projects on iOS, Android, and the Web.
4 |
5 | GitHub URL: https://github.com/PyroProtato/StudyPlayProfit/tree/master
6 |
7 | How did you build this: I used React Native. Started out by skimming Youtube videos online for HTML, JS, CSS, and React Native courses just to give me a general feel for the framework. Then I just dove right into the app, searching up things I didn't remember/understand/know and eventually with a lot of work I was able to make this!
8 |
9 | Did you use wakatime to log your progress?: Yes
10 |
11 | Testflight link: https://testflight.apple.com/join/FhjynMS1
12 |
13 | How many users on testflight?: Just me on my iPad so far, but I'm planning on trying it out with my families other devices.
14 |
15 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1745116066610469
16 |
17 | Video Demo URL: https://hc-cdn.hel1.your-objectstorage.com/s/v3/9e138c881044da78f3bb5ed86194685056d14598_img_0527.mp4
18 |
--------------------------------------------------------------------------------
/submissions/arcade-stats/README.md:
--------------------------------------------------------------------------------
1 | # Arcade Stats App Submission
2 | ---
3 |
4 | **Name**: Arcade Stats
5 |
6 | **Description**: Arcade Stats is an app designed to allow users to keep track of all their Arcade data, streamlined into one location. Whether they want to keep track of their session history
7 | for easy scrapbooking, view their total time to share with others, or track their progress towards items that they would like to get.
8 |
9 | **GitHub URL**: https://github.com/mjh316/Arcade
10 |
11 | **How did you build this**: I used Swift UI to build the app. Followed a bunch of guides and tutorials online and then when I felt comfortable, started building my own version of the app.
12 |
13 | **How many hours did you spend on this**: 15 hours
14 |
15 | **Did you use #arcade to log your progress?**: Yes - partially, about half is missing due to late hour working + no Figma logging :(
16 |
17 | **Testflight link**: https://testflight.apple.com/join/J6v0ZcbP
18 |
19 | **How many users on testflight?**: 12
20 |
21 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1721847851518359 (URL of your slack post in the #ship channel on Hack Club Slack)
22 |
23 | **Video Demo URL**: [https://youtube.com/shorts/omNxbo6TZo4?si=iyeTL2VlktG08zya](https://youtube.com/shorts/omNxbo6TZo4?si=iyeTL2VlktG08zya)
24 |
--------------------------------------------------------------------------------
/submissions/Dysperse/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Dysperse (www.dysperse.com)
2 |
3 | **Description**: Dysperse is a productivity app that adapts to your workflow. Instead of forcing you into a rigid to-do list, it offers smart task management, customizable views, AI-powered organization, and deep integrations with tools like Canvas, Spotify, and Google Calendar. Whether you're a student, professional, or planner, Dysperse helps you stay on top of tasks—your way.
4 |
5 | **GitHub URL**: https://github.com/dysperse/dysperse
6 |
7 | **How did you build this**: I built Dysperse using React Native and Expo without any external UI frameworks, handling animations with React Native Reanimated. The backend API is built with TypeScript and Next.js, using Prisma ORM for the database and hosted on Vercel along with the client dashboard. For the native app, I use React Navigation, React Native Gesture Handler, and compile it through EAS Build.
8 |
9 | **How many hours did you spend on this**: 530 hours, 39 minutes
10 |
11 | **Did you use wakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/H6phHnF5
14 |
15 | **How many users on testflight?**: 33
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1738185494536779
18 |
19 | **Video Demo URL**: https://youtu.be/JrjmRNYYRBc
20 |
--------------------------------------------------------------------------------
/submissions/scaffold/README.md:
--------------------------------------------------------------------------------
1 | # iOS App Submissions
2 |
3 | ---
4 |
5 | **Name**: Scaffold
6 |
7 | **Description**: This is basicaly a second brain app based off [mymind](https://mymind.com/) but a fair bit worse 😭; at least its all open source and works offline! You can add links and images to the app and it will tag them and make them searchable with super fast offline search.
8 |
9 | **GitHub URL**: https://github.com/kcoderhtml/scaffold
10 |
11 | **How did you build this**: I used expo to build this! It was super nice having everyone on slack helping me solve problems and duckduckgo was definetly my best friend during this! I temperoaliy had a backend server written in typescript but gave up on that after realizing a local database would be better. All the data is stored in a giant json store which is a horrible way to do it but thats what I knew when i first made this and I'm not going to refactor everything :)
12 |
13 | **How many hours did you spend on this**: 23 hours
14 |
15 | **Did you use #arcade to log your progress?**: Yes!
16 |
17 | **Testflight link**: https://testflight.apple.com/join/zh18vZUy
18 |
19 | **How many users on testflight?**: 16
20 |
21 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1717868841963149
22 |
23 | **Video Demo URL**: https://www.youtube.com/shorts/m5ASqlrYX_Q
24 |
--------------------------------------------------------------------------------
/submissions/Athan app by AADIL/README.md:
--------------------------------------------------------------------------------
1 | # 🕌 Athan App by Aadil
2 |
3 |
4 |
5 | A simple, beautiful, and **ad-free** Islamic prayer time app built using **React Native**.
6 |
7 | No more ads ruining your Suhoor ✋
8 |
9 | ## 🚀 About the Project
10 |
11 | During Ramadan, I was frustrated by prayer apps full of ads when every second before Fajr counted.
12 | So I decided to build my own app — clean, accurate, and distraction-free.
13 |
14 | ### 🔧 Built With:
15 | - **React Native** – so it works on both Android and (soon) iOS
16 | - ❤️ Time, effort, and lots of Suhoor ADS
17 |
18 | ### 🌍 Currently Supports:
19 | - Cities across **Qatar** (with verified prayer times)
20 | - Global support coming soon, starting with the Gulf
21 |
22 | GitHub URL: https://github.com/aadilnoufal/Athan_app_by_AADIL-ad-free-/tree/main
23 |
24 | How did you build this: I used React Native on vs code
25 |
26 |
27 |
28 | Did you use wakatime to log your progress?: Yes
29 |
30 | Testflight link: https://testflight.apple.com/join/WF25ZVDu
31 |
32 | Ship URL: N/A
33 |
34 | Video Demo URL: https://www.dropbox.com/scl/fi/lt7428d9m3l5pya3ojzaj/WhatsApp-Video-2025-04-10-at-5.09.43-PM.mp4?rlkey=l749ak9oo9qyn0fjfysyrfl9a&st=kvrlzmua&dl=0
35 |
--------------------------------------------------------------------------------
/submissions/agin-music/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Agin Music
2 |
3 | **Description**: Agin Music is a [Navidrome](https://navidrome.org) (and OpenSubsonic) client. I've created it because I couldn't find any client that would have a lot of features (for example synced lyrics support) and also have a good-looking UI.
4 |
5 | **GitHub URL**: [https://github.com/TymekV/AginMusicMobile](https://github.com/TymekV/AginMusicMobile)
6 |
7 | **How did you build this**: I used React Native and Expo to build the app. I've had some experience building mobile apps with Expo. I'm using [react-native-track-player](https://github.com/doublesymmetry/react-native-track-player) for audio playback.
8 |
9 | **How many hours did you spend on this**: 75 hours
10 |
11 | **Did you use wakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/jH76ZDQs
14 |
15 | **How many users on testflight?**: 5
16 |
17 | **Ship URL**: [https://hackclub.slack.com/archives/C0M8PUPU6/p1736042302220629](https://hackclub.slack.com/archives/C0M8PUPU6/p1736042302220629)
18 |
19 | **Video Demo URL**: [https://www.dropbox.com/scl/fi/itpjmp5zq0c1i1ktfbok7/ScreenRecording_01-05-2025-02-44-57_1.MP4?rlkey=phi26rgu8k4z0ua347vh0zp9z&st=tqbf73v5&dl=0](https://www.dropbox.com/scl/fi/itpjmp5zq0c1i1ktfbok7/ScreenRecording_01-05-2025-02-44-57_1.MP4?rlkey=phi26rgu8k4z0ua347vh0zp9z&st=tqbf73v5&dl=0)
20 |
--------------------------------------------------------------------------------
/submissions/Droplet Socials/README.md:
--------------------------------------------------------------------------------
1 | # Droplet Socials
2 |
3 | **Name**: Droplet Socials
4 |
5 | **Description**: I built droplet as a way for me and my friends to share stuff in a fun way without having ads, promotions and data harvesting on the platorms we used. Droplet is designed to not be addicting, and to do its job with no unnecessary features. It's inspired by bereal in that there is only one prompt per day, chosen by a random member of a "bubble" (like a group chat), which the other members can reply to.
6 |
7 | **GitHub URL**: https://github.com/dragon863/droplet
8 |
9 | **How did you build this**: I used a similar tech stack to [My Runshaw](https://github.com/Dragon863/myrunshaw/), which is a FastAPI backend (but this time using sqlmodel and deployed on coolify), and I used flutter for the app itself. The hardest part was convincing my 2013 macbook to compile it without freezing up!
10 |
11 | **Did you use wakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: [https://testflight.apple.com/join/snGvWQK3](https://hackclub.slack.com/archives/C0M8PUPU6/p1745015568024499)
14 |
15 | **How many users on testflight?**: Unsure
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1745015568024499
18 |
19 | **Video Demo URL**: [here!](https://hc-cdn.hel1.your-objectstorage.com/s/v3/3d4729c0b3660b322b3728b96c925afd1f44bea1_screencast_from_2025-04-16_23-54-51.webm)
20 |
--------------------------------------------------------------------------------
/submissions/Tala-Shruti/README.md:
--------------------------------------------------------------------------------
1 | # iOS App Submissions
2 |
3 |
4 | ---
5 |
6 | **Name**: Tala Shruti v2
7 |
8 | ### **Description**: What is this app? How does it help you? What problem does it solve for you and your friends?
9 |
10 | Tala Shruti is a clean and intuitive app designed for a sleek and easy way to get a digital shrutibox (carnatic pitch drone), with special optimization for Carnatic singers. It helps musicians and students by providing an easy-to-use solution for precise scales. This app addresses the problem of overly complicated shrutibox apps with their messy UI and not working components, making it a favorite among teachers and performers for its simplicity and effectiveness.
11 |
12 | **GitHub URL**: https://github.com/The-UnknownHacker/Tala-Shruti
13 |
14 | **How did you build this**: Using Swift documentation and my experience with Swift in years 6–8 (learning it in school and building apps during that time).
15 |
16 | **How many hours did you spend on this**: Around 32.
17 |
18 | **Did you use #arcade to log your progress?**: No.
19 |
20 | **TestFlight link**: https://testflight.apple.com/join/FdQqy3fG
21 |
22 | **How many users on TestFlight?**: 10 for now. I'm not sure how many more will be interested.
23 |
24 | **Ship URL**: Unfortunately, I didn’t track the hours, so when I work on it more, I will ship it.
25 |
26 | **Video Demo URL**: https://youtu.be/o722C0GA8HA
27 |
--------------------------------------------------------------------------------
/submissions/minichef/README.md:
--------------------------------------------------------------------------------
1 | # minichef App Submission
2 |
3 | **Name**: minichef
4 |
5 | **Description**: minichef is a simple yet feature-rich recipe management app. The primary problem I faced was that I needed to save recipes and go through them later on easily, but didn't find a solution to my liking. I needed to be able to add recipes from any URL, even if the app didn't "natively support it", so I made my own app that can do this. Now, I can import any recipe I find online and save it, while also making my own recipes by hand.
6 |
7 | **GitHub URL**: https://github.com/CoolCoderSJ/minichef
8 |
9 | **How did you build this**: Since I don't have a mac, I used React Native for the app. I started off from a previous app I made using RN, but eventually ended up changing almost all of the UI in order to make it less clunky. A lot of documentation and stack overflow links finally led me to the final product I'll be publishing.
10 |
11 | **How many hours did you spend on this**: 20+ hours
12 |
13 | **Did you use #arcade to log your progress?**: Partially- only 8 and a half hours have been logged, even though the project took longer.
14 |
15 | **Testflight link**: https://testflight.apple.com/join/OgCqSvV4
16 |
17 | **How many users on testflight?**: 4
18 |
19 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1719082388818759
20 |
21 | **Video Demo URL**: https://youtu.be/wKoHCnUtV6A
22 |
--------------------------------------------------------------------------------
/submissions/Smart8Ball/README.md:
--------------------------------------------------------------------------------
1 | Name: Smart8Ball
2 |
3 | Description: Imagine the classic Magic 8 Ball, but instead of giving random answers, it uses AI to guide you through the decision-making process. Smart8Ball asks interactive, thought-provoking questions to help you reflect quickly and clearly. It’s designed to spark cognitive thinking by drawing on principles from psychology, human-computer interaction, and decision intelligence.
4 | You can also get advice from your dream (custom) advisor and view visual summaries and decision paths as you go. Smart8Ball doesn't just help you choose — it helps you understand why you're choosing it.
5 |
6 | GitHub URL: [https://github.com/TCYTseven/smart8mobile](https://github.com/TCYTseven/smart8mobile)
7 |
8 | How did you build this: I built this app using React Native with Expo. The UI was designed in Figma to ensure a clean and intuitive user experience. For AI functionality, I’m leveraging a fine-tuned GPT-4.1 model through Azure OpenAI. Supabase is handling the backend, including authentication and database management.
9 |
10 | Did you use Hakatime to log your progress?: Yes
11 |
12 | Testflight link: https://testflight.apple.com/join/tRtd7XgN
13 |
14 | How many users on testflight?: 8
15 |
16 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1747693475537999
17 |
18 | Video Demo URL: https://youtube.com/shorts/kCYKbuPqwNE
19 |
20 | note: fixed changes
21 |
--------------------------------------------------------------------------------
/cider-meals/README.md:
--------------------------------------------------------------------------------
1 | Name: Cider Meals
2 |
3 | Description: Cider Meals is the all-in-one, minimalist recipe app for beginners, featuring an Instagram-like design thanks to an easy-to-use UI. Browse categories like beef and chicken, or use our special search to find recipes for ingredients you don't know what to do with. Packed with famous dishes, features like a built-in timer, handy widgets with daily tips, and the ability to keep track of your favorite meals through likes, Cider Meals makes cooking simple and interesting for newcomers.
4 |
5 | GitHub URL: https://github.com/Morgan-Su/cider-meals
6 |
7 | How did you build this: I started with React Native and set everything up in VSCode by following guides. I ended up sticking with the environment since it could be tracked by Hackatime and I was most familiar with it while working on a Windows pc. I then followed tutorials on YouTube to get familiar with the basics and using the terminal, and after gaining confidence, I began building my own original version of the app using React Native, sticking with VSCode throughout the process
8 |
9 | Did you use Hakatime to log your progress?: Yes / 43 Hours
10 |
11 | Testflight link: https://testflight.apple.com/join/t6U2NfBQ
12 |
13 | How many users on testflight?: 3
14 |
15 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1756432780419199
16 |
17 | Video Demo URL: https://www.youtube.com/shorts/tzFi9lH9h2c
18 |
--------------------------------------------------------------------------------
/submissions/AstroTask/README.md:
--------------------------------------------------------------------------------
1 | Name: AstroTask
2 |
3 | Description: AstroTask is your space-themed companion for focused productivity and efficient task management. It features two different timers that integrate the Pomodoro technique into your workflow, one for 25 minutes of study, one for a 5 minute break. Both feature a start, stop, and reset button. The main attraction of this app is the ToDo List though. Add a new task using the plus button, delete it by swiping left, and edit it by pressing it. While in edit mode, you can add a description and adjust the priority from low, medium, or high, to display it higher or lower on your list.
4 |
5 | GitHub URL: https://github.com/tinkeraudrey/AstroTask
6 |
7 | How did you build this: I used YouTube tutorials to educate myself on SwiftUI before and throughout the process, as well as quick google searches. I programmed it in Xcode.
8 |
9 | How many hours did you spend on this: 13 hours
10 |
11 | Did you use #arcade to log your progress?: Yes
12 |
13 | Testflight link: https://testflight.apple.com/join/dfravJVj
14 |
15 | How many users on testflight?: 9
16 |
17 | Ship URL: https://app.slack.com/client/T0266FRGM/C01504DCLVD
18 |
19 | Video Demo URL: https://go.screenpal.com/watch/cZir3BVP3AV (I don't have a YouTube account, so I uploaded my video to ScreenPal and you should be able to still see it using the url. Please let me know if there are any complications! :)
20 |
--------------------------------------------------------------------------------
/submissions/NextLesson/README.md:
--------------------------------------------------------------------------------
1 | **Name**: NextLesson (EN) // NästaLektion (SE)
2 |
3 | **Description**: The NextLesson app allows you to easily see information about which lesson you will have next aswell as information about the lesson you currently have. All schools that use the timetable system Skola24 from Nova Software have the opportunity to use the app.
4 |
5 | **GitHub URL**: https://github.com/LCHoldings/NextLesson
6 |
7 | **How did you build this**: I wanted to make an app, I took a Swift UI course on FrontendMasters and got to work. With some chatgpt help i managed to understand how most of the stuff worked. With the help of a friend i got a pretty stable and nice API up and running to provide me with the data I need as easy as possible. So after many many hours the app is now mostly flawless.
8 |
9 | **How many hours did you spend on this**: I'd say about 24 hours excluding the course. Logged 17 hours of it on hackatime before i switched to my new computer.
10 |
11 | **Did you use #hack-hour to log your progress?**: I used hackatime during most of the time spent on the app.
12 |
13 | **Testflight link**: https://testflight.apple.com/join/pFMNj88Y
14 |
15 | **How many users on testflight?**: Just me, haven't really shared it to anyone.
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1731361705706229
18 |
19 | **Video Demo URL**: https://youtube.com/shorts/5dT9jw2pDyc?si=_9lho_BIcaHrRGwk
20 |
--------------------------------------------------------------------------------
/submissions/torsion-app/README.md:
--------------------------------------------------------------------------------
1 | Name: torsion
2 |
3 | Description: This is an app desined for competitors in the VEX V5RC robotics competition. In this competition, teams are required to find alliance partners, and this app greatly simplifies this process by allowing teams to request and accept alliance invitations (reducing the likelihood of teams being rejected during the alliance selection period) and by allowing teams to communicate with a chat function.
4 |
5 | GitHub URL: https://github.com/torsion-app/torsion
6 |
7 | How did you build this: This was my first time building a mobile app. I used react native - for the cross platform functionality, and the ease of porting to desktop with electon - along with expo to greatly simply testing on real devices. I used mostly the online documentation, as well as StackOverflow and other forums for help learning react native, and Mozilla web docs for any javascript help I needed, since I had not used JavaScript much previously.
8 |
9 | How many hours did you spend on this: 32+ hours
10 |
11 | Did you use #arcade to log your progress?: No
12 |
13 | Testflight link: https://testflight.apple.com/join/TOGLa8wj
14 | Test Accounts: 1. test@test.com - Test1234, 2. other@test.com - Other1234
15 |
16 | How many users on testflight?: 6
17 |
18 | Ship URL: https://hackclub.slack.com/archives/C0M8PUPU6/p1724255865120369
19 | Video Demo URL: https://youtu.be/6jI0irJvOYA?si=hG_g0TTXLPkSJa4c
20 |
--------------------------------------------------------------------------------
/website/data/faqs.js:
--------------------------------------------------------------------------------
1 | export const faqs = [
2 | {
3 | question: "How many projects can I build?",
4 | answer: "For now, we're limiting it to one submission per person.",
5 | },
6 | {
7 | question: "How much does it cost?",
8 | answer:
9 | "100% free– everything from building the app from scratch to publishing it on the App Store should cost you no money! The whole program is funded by donations to The Hack Foundation.",
10 | },
11 | {
12 | question: "Who is eligible?",
13 | answer:
14 | "You need to be a high schooler (or younger).",
15 | },
16 | {
17 | question: "What do I need?",
18 | answer:
19 | "A Macbook device to run XCode for iOS development (or you can use Expo on VSCode). If you don't have an iPhone to test your apps, you can use the Simulator app that comes with XCode!",
20 | },
21 | {
22 | question: "I need help!",
23 | answer: "Get it in the #cider channel of the Hack Club Slack.",
24 | },
25 | {
26 | question: "What projects are allowed?",
27 | answer:
28 | "Anything that's unique and improves your/your friends' lives in some way. If you're unsure, submit a proposal and we'll help you out!",
29 | },
30 | {
31 | question: "Something else?",
32 | answer:
33 | "Join the Hack Club Slack today and ask in the #cider channel. We're here to help! Alternatively, feel free to DM @fayd with any questions you have.",
34 | },
35 | ];
36 |
--------------------------------------------------------------------------------
/submissions/Verdi/README.md:
--------------------------------------------------------------------------------
1 | # Verdi
2 |
3 | **Name**: Verdi
4 |
5 | **Description**: Verdi is an eco-friendly companion which helps track your carbon emissions throughout the year and helps in comparing with your friends to see who is the one that takes care of the environment the most
6 |
7 | **GitHub URL**: [https://github.com/contyadvait/verdi](https://github.com/contyadvait/verdi) (contains link to both frontend and backend repos)
8 |
9 | **How did you build this**: I used SwiftUI. I had a rough understanding and had created an app before but had forgotten it since it was a long long time ago. So I rewatched tons of videos, re-learnt some things, and most importantly learnt how to use SwiftUI Charts. Overall, had a fun time too!
10 |
11 | **How many hours did you spend on this**: 13.3 Hours
12 |
13 | **Did you use #hack-hour to log your progress?**: Kinda? (High Seas Hackatime)
14 |
15 | **Testflight link**: [https://testflight.apple.com/join/fXkBWR4a](https://testflight.apple.com/join/5HjXAA3x)
16 |
17 | **How many users on testflight?**: 3 (me + some friends)
18 |
19 | **Ship URL**: [URL](https://hackclub.slack.com/archives/C0M8PUPU6/p1734924261169009)
20 |
21 | **Video Demo URL**: [Link (Sorry its a short!)](https://youtube.com/shorts/Ccu1nj9xuYs)
22 |
23 | **Features:**
24 | 1. Tracking of carbon emissions
25 | 2. Tracking of air travels' carbon emissions
26 | 3. Credits system for easier comparisons
27 | 4. Leaderboards for comparions
28 |
--------------------------------------------------------------------------------
/submissions/remime-ios/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Remime iOS
2 |
3 | **Description**: It is a minimalistic time management application which includes a timer, a stopwatch, clock , and a pomodoro mode.
4 | The thing that makes it different from other applications is that its design is based on catppuccin and I couldn't find similar applications with that color scheme.
5 | Its made to be extremely user friendly and simple. It helps users to focus properly and work efficiently with the pomodoro mode, and properly monitor time with the other tools.
6 |
7 | **GitHub URL**: https://github.com/ShibamRoy9826/remime-ios
8 |
9 | **How did you build this**: I used React Native and Expo to create this application. I started with the Documentation, but found it a little confusing,
10 | so I searched for a youtube lecture on expo and react. After completing that, I could finally make this application.
11 |
12 | **How many hours did you spend on this**: 20Hrs approx (15 hrs for coding, almost 3 hrs for the logo, 1hr for a scraped logo(made in aseprite with wakatime), and one hr for testing)
13 |
14 | **Did you use wakatime to log your progress?**: Yes partially, the time for logo and testing are not logged:(
15 |
16 | **Testflight link**: https://testflight.apple.com/join/5g5Y4SQs
17 |
18 | **How many users on testflight?**: 0
19 |
20 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1738242513615639
21 |
22 | **Video Demo URL**: https://cloud-pilqvqngp-hack-club-bot.vercel.app/0demo.mp4
23 |
--------------------------------------------------------------------------------
/submissions/SwimTrack/README.md:
--------------------------------------------------------------------------------
1 | # iOS App Submissions
2 |
3 |
4 | ---
5 |
6 | **Name**: Swim Track
7 |
8 | ### **Description**: What is this app? How does it help you? What problem does it solve for you and your friends?
9 |
10 | So if you've ever been around a swimming pool with children nearby, You mustve thought to yourself "OH NO WHAT IF THEY FALL IN WHEN THEIR PARENT IS ON THEIR PHONE" well, we bring the solution. with swimtrack we hope to get parents less distracted from being on their phones all the time!
11 |
12 | real pitch: https://www.icloud.com/keynote/080Ut-FEe9EswUpgBWmIeSr_Q#Cloudhacks
13 |
14 | **GitHub URL**: https://github.com/saumilthecode/drown (i did not think the repo name through when i made it at 1am)
15 |
16 | **How did you build this**: SwiftUI knowledge i picked up nearly 2 years ago at the Swift Accelerator Programme Singapore
17 |
18 | **How many hours did you spend on this**: 26 hours?? (i assume 1h = 1 commit so eh)
19 |
20 | **Did you use #arcade to log your progress?**: Yes
21 |
22 | **Testflight link**: https://testflight.apple.com/join/ejTWWr5B
23 |
24 | **How many users on testflight?**: 17 (so far. MacOS sequla borked testflighting halfway through so i didnt ask poeple to download it)
25 |
26 | **Ship URL**:Not shipped yet since still working on TipKit (its not fun to work with unfortunately)
27 |
28 | **Video Demo URL**:[](https://hackclub.slack.com/files/U078K08NN2Y/F07F75Y5XFY/simulator_screen_recording_-_iphone_15_-_2024-08-04_at_09.33.37.mp4)
--------------------------------------------------------------------------------
/submissions/my-runshaw/README.md:
--------------------------------------------------------------------------------
1 | **Name**: My Runshaw
2 |
3 | **Description**: This is an app I made for me and my friends, although it could potentially be very useful for other students in my college (UK, equivalent of high school in the US). It lets us share timetables, get push notifications on bus arrivals, and all authentication and friend requests use the QR codes on our student ID badges. It's built with Flutter and python (backend only of course), and the backend API is dockerised. You can read about the creation process [on my website](https://danieldb.uk/posts/runshaw-app/)
4 |
5 | **GitHub URL**: [https://github.com/cooldude/recipe](https://github.com/Dragon863/myrunshaw/)
6 |
7 | **How did you build this**: I used Flutter to build this. I have some experience with flutter, but this was my first time trying to make a super maintainable app that can handle errors in a robust way. Again there is more on how I built this on my website (linked above)
8 |
9 | **How many hours did you spend on this**: ~30 to 35 hours
10 |
11 | **Did you use #hack-hour to log your progress?**: Yes (but I started before high seas so not all of it is there)
12 |
13 | **Testflight link**: https://testflight.apple.com/join/JCwSXDKK
14 |
15 | **How many users on testflight?**: 10
16 |
17 | **Ship URL**: [link](https://hackclub.slack.com/archives/C0M8PUPU6/p1734127103696929)
18 |
19 | **Video Demo URL**: [link](https://cloud-cicz021pv-hack-club-bot.vercel.app/0screencast_from_2024-12-13_21-59-05.webm)
20 |
--------------------------------------------------------------------------------
/website/data/projects.js:
--------------------------------------------------------------------------------
1 | export const projects = [
2 | {
3 | name: "Penguin Pair",
4 | author: "Thomas & Dieter",
5 | link: "https://apps.apple.com/pl/app/penguin-pair-cards/id6446442403",
6 | image: "https://cloud-7fz7o893d-hack-club-bot.vercel.app/0image.png",
7 | description: "A penguin card pairing game built with SwiftUI",
8 | },
9 | {
10 | name: "Orpheus Pair",
11 | author: "Faisal (me!)",
12 | link: "https://github.com/faisalsayed10/dino-pair",
13 | description: "A card pairing game made with React Native and a lot of orpheus pics",
14 | },
15 | {
16 | name: "Pokedex",
17 | author: "JC",
18 | link: "https://github.com/jianmin-chen/react-native-pokedex",
19 | description: "A pokedex built with React Native",
20 | },
21 | {
22 | name: "Ecobuddy",
23 | author: "Sahiti",
24 | link: "https://github.com/sahitid/ecobuddy",
25 | description:
26 | "An iOS app for sustainable living and completing eco-friendly exercises",
27 | },
28 | {
29 | name: "Mol",
30 | author: "Toby",
31 | link: "https://github.com/tobyab/ssc24",
32 | description:
33 | "An iOS app to view the periodic table and its elements right from your iPhone",
34 | },
35 | {
36 | name: "Bird ID",
37 | author: "Samvid",
38 | link: "https://github.com/theamazing0/Bird-ID",
39 | description:
40 | "A machine learning app to identify and learn about birds by taking pictures of it.",
41 | },
42 | ];
43 |
--------------------------------------------------------------------------------
/submissions/back-on-track-america/README.md:
--------------------------------------------------------------------------------
1 | **Name:** Back on Track America
2 |
3 | **Description:** The Back on Track America mobile app is app made to help coordinate the events and communications of
4 | Back on Track America (temporary site at https://backontracktampa.wixsite.com/my-site), a nonprofit organization dedicated to
5 | serving the homeless and those suffering from food insecurity by coordinating student volunteers in several communities.
6 | It allows volunteers to sign up for their location, receive announcements from location leaders, and discuss upcoming events.
7 |
8 | **GitHub URL:** https://github.com/backontrackus/app
9 |
10 | **How did you build this:** I used React Native and Expo on the frontend to build this app,
11 | combined with [Pocketbase](https://pocketbase.io/) and some custom Go logic (at https://github.com/backontrackus/backend)
12 | on the backend. I was a little familiar with React Native before this, but I really learned how to build a complete
13 | cross-platform mobile app while building this. The Expo docs were pretty good, and I used a variety of other packages like
14 | react-navigation and nativewind to make it work.
15 |
16 | **How many hours did you spend on this:** 50 hours (according to Wakatime)
17 |
18 | **Did you use #arcade to log your progress?:** Yes
19 |
20 | **Testflight link:** https://testflight.apple.com/join/AGWWz672
21 |
22 | **How many users on testflight?:** 14
23 |
24 | **Ship URL:** https://hackclub.slack.com/archives/C0M8PUPU6/p1722391701058519
25 |
26 | **Video Demo URL:** https://youtu.be/ppXDlS_ZUVE
27 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | **App Name**:
5 |
6 | **Your Slack ID** (run `/sdt whoami` in any channel):
7 |
8 | Before creating your pull request, please fill out the criteria below to make sure your app is eligible.
9 |
10 | ## Requirements:
11 | - [ ] I am a high schooler (or younger).
12 | - [ ] I have _at least_ 40 hours logged on my app on [Hackatime](https://hackatime.hackclub.com/)
13 | - [ ] I have joined the [`#cider`](https://hackclub.slack.com/archives/C073DTGENJ2) channel on [Slack](https://hackclub.com/slack/)
14 | - [ ] My app meets the following requirements:
15 | - [ ] Is open-source, original, unique & built using React Native, SwiftUI or Flutter
16 | - [ ] Was not written with AI generated code
17 | - [ ] Has at least five unique screens (e.g., home, profile, settings, notifications, and a feature-specific screen).
18 | - [ ] Has some sort of data management system, using either local storage, cloud databases, or APIs.
19 | - [ ] Has a clean, user-friendly design that is easy to navigate and visually appealing.
20 | - [ ] Solves a real problem or add significant value to the users' lives.
21 | - [ ] Includes at least three core features that work together to create a cohesive experience (for example, a social network app could include user profiles, a news feed, and direct messaging)
22 |
23 | ## Aditional comments (optional):
24 |
--------------------------------------------------------------------------------
/submissions/Elara/Readme.md:
--------------------------------------------------------------------------------
1 | **Name**: Elara: The ultimate time tracker, where time meets tranquility
2 |
3 | **Description**: Elara is an app I built because I used to use a service called Flocus but I wanted their paid features but thought "hey I could make this myself and tailor it to be better!" and I made this.
4 |
5 | **GitHub URL**: https://github.com/advaitconty/elara
6 |
7 | **How did you build this**: I used mainly SwiftUI + SwiftData to build the app. It's a combination of stuff I've learnt and managed to put together to be as polished as I could make it. Took so long because I didn't like the original timer implementation, and then completely re-wrote it for the v2 edition of this app.
8 |
9 | **Did you use Hakatime to log your progress?**: Yes. Originally, this app was called Solstice (can be seen in the macOS binary name) but changed it after I got my first account from Verdi for publishing because of copyright. Total hours: 46 hours, 51 min
10 |
11 | **Testflight link**: I never published it on TestFlight, published it directly on the App Store, link is [here](https://apps.apple.com/sg/app/elara/id6745421296). Newest version for macOS is pending App Store Review, the iPadOS app is pending approval for the usage of FamilyControls API
12 |
13 | **How many users on testflight?**: None on TestFlight, 11 users from the App Store
14 |
15 | **Ship URL**: [https://hackclub.slack.com/archives/C0M8PUPU6/p1751863031809499](https://hackclub.slack.com/archives/C0M8PUPU6/p1751863031809499)
16 |
17 | **Video Demo URL**: [https://youtu.be/Ov03Ccx-Cq4](https://youtu.be/Ov03Ccx-Cq4)
18 |
--------------------------------------------------------------------------------
/submissions/croptimization/README.md:
--------------------------------------------------------------------------------
1 | # Croptimization iOS App Submission
2 |
3 | **Name:** Croptimization
4 |
5 | **Description:**
6 | Croptimization is a smart agriculture app that leverages machine learning, real-time environmental data, and an intuitive mobile interface to help farmers optimize their crop yields. By providing predictive crop recommendations, irrigation management, and sustainability insights, it bridges the gap between agriculture and technology. This app empowers farmers with data-driven decisions to enhance productivity while conserving resources.
7 |
8 | **GitHub URL:** [https://github.com/yashmitb/croptimization-snack](https://github.com/yashmitb/croptimization-snack)
9 |
10 | **How did you build this:**
11 | I built the app using **React Native** for cross-platform mobile development. The backend is powered by **Node.js with Express.js**. The machine learning models are implemented in **Python** using **Scikit-learn** and **TensorFlow**. APIs like **OpenWeatherMap** and **USDA Soil API** provide real-time environmental data.
12 |
13 | **How many hours did you spend on this:** ~100+ hours
14 |
15 | **Did you use Wakatime to log your progress?:** No
16 |
17 | **TestFlight link:** https://testflight.apple.com/join/5X2zp16K
18 |
19 | **How many users on TestFlight?:** 10+
20 |
21 | **Ship URL:** [https://hackclub.slack.com/archives/C0M8PUPU6/p1740721158758829](https://hackclub.slack.com/archives/C0M8PUPU6/p1740721158758829)
22 |
23 | **Video Demo URL:** [https://youtube.com/shorts/41ZFymL1_ss](https://youtube.com/shorts/41ZFymL1_ss)
24 |
--------------------------------------------------------------------------------
/submissions/GoTO/README.md:
--------------------------------------------------------------------------------
1 | **Name:** GoTO
2 |
3 | **Description:** As a long-time resident of Toronto, I’ve become increasingly concerned by the growing amount of litter in my neighborhood. This issue not only affects the cleanliness of our city but also has serious environmental consequences. What’s even more troubling is that much of this litter is caused by people in my generation. Research shows that individuals under 30 are more likely to litter than those who are older. To address this, GoTO was created as a way to encourage young people to take action and clean up litter by offering digital rewards. These rewards come in the form of adorable animal avatars, which make the experience fun and engaging. The app allows users to track their impact in real-time, with a map that shows the locations where litter has been picked up and a calendar that tracks the amount of litter collected over time. GoTO empowers youth to see the positive difference they’re making, one piece of litter at a time.
4 |
5 | **GitHub URL:** https://github.com/Carolxnexxx/goTO
6 |
7 | **How did you build this:** I used react native to build the app. I started from stratch by learning javascript and using onling tutorials to build different parts of my app.
8 |
9 | **How many hours did you spend on this:** 50 hours
10 |
11 | **Did you use wakatime to log your progress?:** No
12 |
13 | **Testflight link:** https://testflight.apple.com/join/UXeRAM55
14 |
15 | **How many users on testflight?:** Just me!
16 |
17 | **Ship URL:** https://hackclub.slack.com/archives/C0M8PUPU6/p1737989407369769
18 |
19 | **Video Demo URL:** https://youtube.com/shorts/G4I-eBi3cvA
20 |
--------------------------------------------------------------------------------
/submissions/Receipty/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Receipty
2 |
3 | **Description**: Receipty is an app that bascially allows you to snap your Reciepts, place them all into one application, add details into them, and then keep them organised. Thing is me and my family recently moved to Abu Dhabi, so my dad was having a hard time keeping his reciepts etc. becuase they WERE SO MANY. So I made this app for him and I found him using it a lot nowadays as it allows him to manage his finances very easily, and all in one place. He prev. used to just store them in files but you know its not as fast as Receipty with respect to adding reciepts on the spot, tags, details, price, date etc. This is what the app is and what problem it solved.
4 |
5 | **GitHub URL**: https://github.com/muhammadanas0716/Receipty
6 |
7 | **How did you build this**: Oh, first and foremost did the course on Swift and SwiftUI by Sean Allen, and then just hopped on to make this project. Did not have a lot of experience before. Did breifly work on Swift around 3 years ago but don't recall that much. I will not lie, I also took help from chatGPT and my followers on X (Twitter). I got stuck often and had to do this!
8 |
9 | **How many hours did you spend on this**: Idk, took me around a week, few hours everyday.
10 |
11 | **Did you use #arcade to log your progress?**: Nope
12 |
13 | **Testflight link**: https://testflight.apple.com/join/fX9bQCfM
14 |
15 | **How many users on testflight?**: 29
16 |
17 | **Ship URL**: [https://hackclub.slack.com/abc](https://hackclub.slack.com/archives/C0M8PUPU6/p1721133911009079)
18 |
19 | **Video Demo URL**: [YouTube Video](https://youtube.com/shorts/RgPRzlvEwiE?feature=share)
20 |
21 |
--------------------------------------------------------------------------------
/submissions/hobit-app/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Hobit App
2 |
3 | **Description**: Introducing a personal habit tracker app designed to help you stay on top of your habits without cluttering your calendar. I often forget to do things on time, and adding reminders to my calendar just made it harder to see my schedule. That's why I created this "hobit" (app) — to help people like me remember the small habits we don't want to miss. It lets you set daily, weekly, and monthly goals, track your progress, and get timely reminders to keep you on track. The main feature is sending notifications right when you need them (currently on hold due to the lack of a push API key).
4 |
5 | **GitHub URL**: https://github.com/binarybard-dvk/hobit-app
6 |
7 | **How did you build this**: This was my first app using React Native. I started by learning the basics of React Native and using Expo to make development easier. I focused on creating a simple and user-friendly interface where users can set and track their daily, weekly, and monthly goals. I used state management to handle user inputs and track progress. For notifications, I planned to use push notifications, but it's currently on hold due to the lack of a push API key. Overall, it was a great learning experience and helped me understand mobile app development better.
8 |
9 | **How many hours did you spend on this**: 8 hours
10 |
11 | **Did you use #arcade to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/bPpR3QBB
14 |
15 | **How many users on testflight?**: 5
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1719629426856859
18 |
19 | **Video Demo URL**: https://youtu.be/-SPnjBT-SSk
20 |
--------------------------------------------------------------------------------
/submissions/Queuify/README.md:
--------------------------------------------------------------------------------
1 |
2 | ---
3 |
4 | **Name**: Queuify
5 |
6 | **Description**: What is this app? How does it help you? What problem does it solve for you and your friends?
7 | Queuify is a iOS app where users can join a digital queue. This allows people to move through a line without
8 | physically being in the queue, allowing them to do other activites simultaneously. Users can save and enjoy
9 | more time during holidays/trips. I was inspired to create this app after a recent vacation to Italy where my
10 | family and I had to queue 4 hours to get tickets for a museum (Vatican). I believe that publishing Queuify will
11 | save time and make everyone's lives more fun!
12 |
13 |
14 | **GitHub URL**: https://github.com/jenniferZO/Queuify_XcodeSwiftApp
15 |
16 | **How did you build this**:
17 | This was the first time I developed an app and the first time I used Swift programming language. In the
18 | beginning I spent a lot of time watching Youtube videos to learn the language and structure of SwiftUI.
19 | I originally used the Swift Playgrounds app on my ipad before transfering my project to Xcode on a school Mac.
20 |
21 | **How many hours did you spend on this**: 60+ hours
22 |
23 | **Did you use #arcade to log your progress?**: Yes but only at the end
24 |
25 | **Testflight link**: https://testflight.apple.com/join/rdH7uPGJ (currently not connected to firestore due to changes in bundle ID so integar values will remain 0. But will be corrected by noon on Sunday.)
26 |
27 | **How many users on testflight?**: 2
28 |
29 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1724594729825269
30 |
31 | **Video Demo URL**: https://youtu.be/_2VqyQuTa9I
32 |
--------------------------------------------------------------------------------
/submissions/nutricheck/README.md:
--------------------------------------------------------------------------------
1 | **Name**: NutriCheck
2 |
3 | **Description**: NutriCheck helps you keep track of your food and activity by providing real-time personalized information based on your nutritional preferences (such as your allergies or preferred ingredients) and body profile (things like your weight or age).
4 | You can search for specific products by name or by scanning its barcode, and the app will provide extensive information, like a Health Score, Match For You Score, nutrients, or allergies.
5 | For activity tracking, you can set up multiple goals to complete, and the app will also provide a daily challenge. There is also a social network present inside the app, so that users can make global or per-product
6 | posts, that can be upvoted/downvoted and commented on.
7 |
8 |
9 | **GitHub URL**: [https://github.com/Alex-Simedrea/NutriCheck-Mobile](https://github.com/Alex-Simedrea/NutriCheck-Mobile)
10 |
11 | **How did you build this**: I used React Native with Expo for building this app. I have built multiple apps using the framework, so I just had to adapt to some new libraries used in this app, such as the HealthKit integration
12 | and the barcode scanning.
13 |
14 | **How many hours did you spend on this**: around 90 hours
15 |
16 | **Did you use #arcade to log your progress?**: No
17 |
18 | **Testflight link**: [https://testflight.apple.com/join/yAQG5p48](https://testflight.apple.com/join/yAQG5p48)
19 |
20 | **How many users on testflight?**: 9
21 |
22 | **Ship URL**: [https://hackclub.slack.com/archives/C0M8PUPU6/p1724331743389409](https://hackclub.slack.com/archives/C0M8PUPU6/p1724331743389409)
23 |
24 | **Video Demo URL**: [https://youtu.be/Prm8nXENcaU](https://youtu.be/Prm8nXENcaU)
25 |
--------------------------------------------------------------------------------
/submissions/Lexicon/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Lexicon
2 |
3 | **Description**: Lexicon is a free, secure, and open-source flashcards app for iOS. Like Quizlet, it has AI chat, learn mode, and test simulations. However, the AI Chat in quizlet is extremely limited and not particularly well-versed in many sectors of the wide range of topics students learn. My AI has unlimited access(just like my learn feature and test features) and also has access to web results to ensure it has the information it needs to ensure the users can succeed in school.
4 |
5 | **GitHub URL**: [https://github.com/ayaangrover/lexicon](https://github.com/ayaangrover/lexicon)
6 |
7 | **How did you build this**: I used SwiftUI and a bit of ChatGPT tutoring which helped me learn new things about swiftui(i'm new to swift and swiftui)
8 |
9 | **Did you use wakatime to log your progress?**: **Yes** / No - I had 43 hrs 8 min of hackatime and ~6 hrs of research online. There was ~20 hours of untracked data from before hackatime/wakatime v2 was launched where I didn't have the extension installed.
10 |
11 | **Testflight link**: [https://testflight.apple.com/join/15cET7KM](https://testflight.apple.com/join/15cET7KM)
12 |
13 | **How many users on testflight?**: 3 via testflight, the rest(mom, dad, sister, and ~5 friends) just tried it out on my xcode simulator on my laptop
14 |
15 | **Ship URL**: [https://hackclub.slack.com/archives/C0M8PUPU6/p1744759304730359](https://hackclub.slack.com/archives/C0M8PUPU6/p1744759304730359)
16 |
17 | **Video Demo URL**: [https://hc-cdn.hel1.your-objectstorage.com/s/v3/5115c622ab1bbb80724c4d1dc2039d09c8bff37d_cleanshot_2025-04-13_at_12.00.12.mp4](https://hc-cdn.hel1.your-objectstorage.com/s/v3/5115c622ab1bbb80724c4d1dc2039d09c8bff37d_cleanshot_2025-04-13_at_12.00.12.mp4)
18 |
--------------------------------------------------------------------------------
/submissions/everwatch/README.md:
--------------------------------------------------------------------------------
1 | Name: Everwatch
2 |
3 | Description:
4 | Everwatch is the ultimate solution for anyone who relies on their websites being up and running. Whether you're a business owner, blogger, or just someone who wants peace of mind, Everwatch takes the stress out of website monitoring.
5 |
6 | Here's how it helps:
7 |
8 | For Business Owners: Lost revenue due to website downtime? Never again. Everwatch lets you know the instant your site goes down, so you can take action quickly and minimize losses.
9 | For Bloggers: Worried about your latest post not reaching your audience? Everwatch ensures your blog is accessible, so you can focus on creating great content.
10 | For Anyone with a Website: Whether it's a personal site, online portfolio, or e-commerce store, Everwatch gives you the confidence that your website is available when you (and your visitors) need it.
11 | No more manually checking your sites or relying on unreliable third-party services. Everwatch provides reliable, real-time monitoring and alerts, directly to your phone. It's like having a dedicated watchdog for your website, always on duty!
12 |
13 | Don't let downtime hold you back.
14 |
15 | GitHub URL: https://github.com/yazidears/everwatch
16 |
17 | How did you build this:
18 | I used my own knowledge on Swift and SwiftUI plus a bit of help from Gemini Advanced from google to solve some issues that went beyond Swift UI.
19 |
20 | How many hours did you spend on this: 32 hours
21 |
22 | Did you use #arcade to log your progress?: No (I WAS TOO LAZY AND NOW I'M SAD ABOUT IT)
23 |
24 | Testflight link: https://testflight.apple.com/join/RDuYcfjO
25 |
26 | How many users on testflight?: on it :)
27 |
28 | Ship URL: Haven't got one yet.
29 |
30 | Video Demo URL: https://share.icloud.com/photos/03eDr4ydDETjhF7_Cts5KQeBg
31 |
--------------------------------------------------------------------------------
/submissions/smartstash/README.md:
--------------------------------------------------------------------------------
1 | Name: Smartstash
2 |
3 | Description: So basically it brings fun back to transaction tracking. I looked for a long time for a good manual simple transaction tracker to help teenagers like me track their finances and I couldn't find a good one so I made this one! Clean, consistent UI!
4 |
5 | GitHub URL: https://github.com/Simon-Wilke/Smartstash
6 |
7 | How did you build this: I used Swift UI to build the app. This was my first super independent one and honestly I was super new so I stored the code backups in Google Docs lol, but I worked for a bunch of months on it and made it super polished, I got some feedback on it from a local bank executive that I talked with and he gave me some code feedback!
8 |
9 | Did you use Hakatime to log your progress?: Yes, Needs Context. I had been initally using Hackatime for this project but after some issues with my MBA's storage, I had to contact AppleCare Support who when they were doing some stuff with XCode, they deleted something or whatever with the Wakatime XCode CLI and so for some reason Wakatime just completely said Nope, your app's progress doesn't exist anymore, so I had to re-set it up but now it only has like 20m of time. If you go back to my git ffor the project you can see I've been working on this for like 8 months so I have tons of people who could vouch for me I probably have 60 or more hrs into it. Feel free to message me to talk about this, I understand the requirements I just wanted to explain my situation!
10 |
11 | Testflight link: https://testflight.apple.com/join/cgRwY3vC
12 |
13 | How many users on testflight?: Me, my dad, brother mom: 4
14 |
15 | Ship URL: (https://hackclub.slack.com/archives/C0M8PUPU6/p1752722846263989)
16 |
17 | Video Demo URL: https://drive.google.com/file/d/1mVcDDHlAM4qmwYIqBWXcFmeqPz_CHSfy/view?usp=drive_link
18 |
--------------------------------------------------------------------------------
/submissions/Lumen/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Lumen
2 |
3 | **Description**: Lumen is an AI-powered notes taker. In Biology, I loved drawing excessively-detailed diagrams of each part of the body as the teacher explained their functions, and I often failed to write down the actual functions. This led to my "notes" being diagrams that I could easily find online, while I lacked the information my teacher told us. To solve this, I created Lumen, an AI-powered notes taker with no restrictions. It works for all subjects, and allows you to either record the lecture(if you're permitted to bring a phone/ipad/macbook to class) or upload your teacher's notes after class.
4 |
5 | **GitHub URL**: https://github.com/ayaangrover/lumen
6 |
7 | **How did you build this**: I used SwiftUI to build the app.
8 |
9 | **Did you use Hakatime to log your progress?**: **Yes** / No
10 | (I worked about 50 hours total on the app. Only 6 hours were successfully added to the right project by the wakatime mac app. The <> project is really a combination of my Xcode projects - which is 92 hrs total, and about 30 hours of that were for my previous project Lexicon, and 10 for my next cider submission. Based on this, i'd estimate 50 hours were tracked under <> and there was another 6 hrs 57 min under Lumen, so a total of around 57 hrs.)
11 |
12 | **Testflight link**: https://testflight.apple.com/join/FGTH9VkC
13 |
14 | **How many users on testflight?**: 3, but a bunch of my friends tested my app on the xcode sim in school
15 |
16 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1748988794767569
17 |
18 | **Video Demo URL**: [https://hc-cdn.hel1.your-objectstorage.com/s/v3/0f787c0a5251ade6c1e6dac115c7c30c7e8a63cd_screenrecording_05-28-2025_20-55-23_1.mov](https://hc-cdn.hel1.your-objectstorage.com/s/v3/0f787c0a5251ade6c1e6dac115c7c30c7e8a63cd_screenrecording_05-28-2025_20-55-23_1.mov)
19 |
--------------------------------------------------------------------------------
/submissions/AliasWordGame/README.MD:
--------------------------------------------------------------------------------
1 | **Name**: Alias - A New Twist on The Word Game
2 |
3 | **Description**: Alias Word Game - A New Twist is a fun and a brain-engaging game. In essence, The goal of the users is to describe words to people, the more you describe -- the better. Each person describes the words to their team members, and at then end the team that's first to reach the goal score wins. The users can add teams, change the game duration, the goal score, add penalties for wrong answers, and choose sets. The sets, or the word lists is what makes this app so unique and fun. A user can choose between various themes instead of being constricted by a single, boring list. That's why my app has various fun and educational sets: "Winter Holidays", "Gen Z", "Landmarks", "Emojis", and "Belarusian Nouns" (with more sets to come in the future). Additionally, in order to further promote curiosity and inspire users to learn new vocabulary, there is an option to look up a definition a word on Google. All in all, Alias can be used anywhere, from parties to roadtrips to school lunches, and in all of these situation Alias seeks to promote its goals of being engaging and educational, by exposing people to new vocabulary and actively engaging their minds, a skill much necessary in the growing age of technology and mass video consumption.
4 |
5 | **GitHub URL**: https://github.com/AlexKhmurovich/AliasWordGame
6 |
7 | **How did you build this**: I used XCode, Swift, and SwiftUI to build this app. I used my prior knowledge of the language, in addition to new topics, tools, and features I discovered while building the app.
8 |
9 | **How many hours did you spend on this**: 16 hours
10 |
11 | **Did you use wakatime to log your progress?**: No
12 |
13 | **Testflight link**: https://testflight.apple.com/join/YJt26vHe
14 |
15 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1736056022343609
16 |
17 | **Video Demo URL**: https://www.veed.io/view/def51d0b-8967-40ac-b80d-b0b920e4b236?panel=share
18 |
--------------------------------------------------------------------------------
/submissions/PixFocus/README.md:
--------------------------------------------------------------------------------
1 | **Name**: PixFocus
2 |
3 | **Description**: Timeblock/Pomodoro timer unlike any other in the consumer market. The style is heavily leaned towards pixel art with neo-brutalism theme,
4 | making it a gamified expereince but not distracting enough for your focus sessions.
5 | This app would compete with other amazing well known focus apps such as StudyBunny, Forest and FocusPomo. However, PixFocus stands out by being entirely free & ad free while offering premium features that are typically locked behind paywalls in similar apps.
6 | One of the gamified elements in the app is users are able to unlock appealing pixel art visual timers by earning coins, these coins are earned through focus sessions, making users more motivate to complete their task and use the timer that PixFocus offers.
7 | Statistic, users are able to analyse their sessions through the stats screen with complex data queries in the backend, users are able to sort their stats by day/week/month/year
8 | and see their results with a pie chart. The settings for both timeblock and pomodoro also contains full customisation, for timeblock users are able to choose the duration from 5 - 120 minutes, and pomodoro has full customisation such as cycles, short rest duration, focus duration & long rest duration.
9 |
10 | **GitHub URL**: https://github.com/Flamebamboo/PixFocus
11 |
12 | **How did you build this**: I use React Native to build this, watch tons of youtuber tutorials and mostly trial and error.
13 |
14 | **How many hours did you spend on this**: 200+ hours total, including the month before I logged into wakatime
15 |
16 | **Did you use wakatime to log your progress?**: Yes, 125+ hours
17 |
18 | **Testflight link**: [Download now!](https://testflight.apple.com/join/CCvp6EAS)
19 |
20 | **How many users on testflight?**: 1
21 |
22 | **Ship URL**: [Ship message URL](https://hackclub.slack.com/archives/C07UA18MXBJ/p1737721265961639)
23 |
24 | **Video Demo URL**: [Youtube](https://youtu.be/MSg5Y0IhBLo)
25 |
--------------------------------------------------------------------------------
/submissions/lostandfound/README.md:
--------------------------------------------------------------------------------
1 | # iOS App Submissions
2 |
3 | **Name**: Lost and Found
4 |
5 | **Description**: This is a Lost and Found app built specifically for my high school. It's a mobile app where students can easily submit and browse lost or found items—like water bottles, ID cards, notebooks, etc. It gives everyone a central place to report items they've lost or found, instead of relying on word of mouth, posters, or random announcements. It’s fast, easy, and works from your phone. Before this, when someone lost something at school, it was hard to track it down unless someone magically stumbled upon it and knew whose it was. Now, we can just open the app, check what's been found, or submit a quick report—and there's a better chance of reuniting with our stuff 🙌
6 |
7 | **GitHub URL**: https://github.com/SlytherSavior/lost-and-found
8 |
9 | **How did you build this**: This is one of the first real projects I built entirely on my own after finally escaping tutorial hell. I started by learning the basics of React Native, then moved on to Firebase and Firestore for authentication and database needs, and styled everything using React Nativewind (a Tailwind-like utility library for React Native). I watched a lot of YouTube—especially JavaScript Mastery—to grasp the fundamentals, and spent a ton of time reading documentation and building while learning. Instead of waiting to be “ready,” I just started experimenting and picking things up as I went. I’d never really built something end-to-end before, so this project became a personal milestone—proof that I could go from watching tutorials to actually building something real that solves a problem in my school community.
10 |
11 | **Did you use wakatime to log your progress?**: Yes
12 |
13 | **Testflight link**: https://testflight.apple.com/join/wf9YvCQB
14 |
15 | **How many users on testflight?**:
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1745134529710849
18 |
19 | **Video Demo URL**: [DEMO HERE](https://www.youtube.com/shorts/h5c55gfcb5M)
20 |
--------------------------------------------------------------------------------
/submissions/Mixtape/README.md:
--------------------------------------------------------------------------------
1 | **Name**: Mixtape
2 |
3 | **Description**:
4 | Mixtape is a music-based journaling app for journalers, music-junkies, and musicians alike that allows users to create "mixtapes" - specialized playlists where users can find space to reflect and document their lives.
5 |
6 | With mixtapes, users can wield music as a tool to document and journal about significant life events or important moments that are bigger than a singular journal entry or that span a longer period of time. Users can add songs that represent important moments and reflect on each track, by captioning individual songs to describe their significance or reflect on their meaning. Mixtapes can be private or collaborative, and are shareable among users and friends.
7 |
8 | Additionally, Mixtape also allows users to create more typical journal entries. With these entries, users can add standard media such as photos or music, and write or reflect about whatever they need. Users may be inspired by a particular song lyric or moment from their day which would make a journal entry the perfect space for a small moment of reflection.
9 |
10 | **GitHub URL**: [https://github.com/olinjohnson/mixtape](https://github.com/olinjohnson/mixtape)
11 |
12 | **How did you build this**: I used SwiftUI to build the app. I started by using Figma to prototype some design ideas, and also used Blender and Figma to create the app artwork. I used Apple's MusicKit and the Spotify Web API to integrate music capabilities within the app. I mostly followed the Apple SwiftUI tutorials to help learn iOS development.
13 |
14 | **How many hours did you spend on this**: 100+ hours
15 |
16 | **Did you use #hack-hour to log your progress?**: No
17 |
18 | **Testflight link**: [https://testflight.apple.com/join/3XQcCWMS](https://testflight.apple.com/join/3XQcCWMS)
19 |
20 | **How many users on testflight?**: 8
21 |
22 | **Ship URL**: [https://hackclub.slack.com/archives/C0M8PUPU6/p1729778453249509](https://hackclub.slack.com/archives/C0M8PUPU6/p1729778453249509)
23 |
24 | **Video Demo URL**: [https://youtu.be/V0DqHvdL00E](https://youtu.be/V0DqHvdL00E)
25 |
26 |
--------------------------------------------------------------------------------
/website/components/nav.js:
--------------------------------------------------------------------------------
1 | import Link from 'next/link'
2 | import { useEffect } from 'react'
3 | import { CgDarkMode } from 'react-icons/cg'
4 | import {useTheme} from 'next-themes'
5 |
6 | const links = [
7 | { label: "Page 1", href: "/" },
8 | { label: "Page 2", href: "/" },
9 | { label: "Page 3", href: "/" },
10 | ]
11 |
12 | export default function Nav() {
13 | const {theme, setTheme} = useTheme()
14 | useEffect(() => {
15 | console.log('Made by Sarthak Mohanty. All Rights Reserved. Want to hire me? https://srtk.me')
16 | })
17 | return (
18 |
46 | );
47 | }
--------------------------------------------------------------------------------
/submissions/GurmukhiTutor/README.md:
--------------------------------------------------------------------------------
1 | iOS App Submissions
2 |
3 | Create a new directory in this folder with the name of your app. Inside the directory, create a markdown file with the name README.md and include the following details:
4 |
5 | Name: GurmukhiTutor
6 |
7 | Description:
8 | This app addresses the issue of Gurmukhi illiteracy among 320,000 Punjabi Sikhs living in America. While many Punjabis speak Punjabi fluently at home due to family practices, they often struggle with writing Punjabi. To address this problem, many parents send their children to Sunday School, hoping that they will learn Gurmukhi letters and connect with their culture. However, Sunday School’s limited weekly time combined with additional schoolwork from regular schools stand as obstacles for children to retain and practice Gurmukhi. Learning Gurmukhi letters is crucial for writing literacy and this app will break down these barriers to help children practice their Gurmukhi letters. It will help them retain information and learn to differentiate between similar-looking letters that are crucial to understanding and writing Gurmukhi. With the portability of mobile devices, users can practice anytime and anywhere. This app is different because it specifically focuses on Gurmukhi and teaches users how to effectively and correctly write the language. This differs from other apps that primarily emphasize speaking skills. In addition, many language apps offer popular languages like Spanish, Russian or Japanese and often overlook Punjabi. This app will play a crucial role in preserving and promoting the Punjabi language in America.
9 |
10 | GitHub URL: [https://github.com/nurikimchi/Gurmukhi](https://github.com/nurikimchi/Gurmukhi)
11 |
12 | How did you build this: Used Expo as a framework to initialize React Native and navigation.
13 |
14 | How many hours did you spend on this: 24
15 |
16 | Did you use #arcade to log your progress?: only logged for first 3 or 4 hours but mostly: 'No'
17 |
18 | Testflight link: https://testflight.apple.com/join/GdYsY3d7
19 |
20 | How many users on testflight?:
21 |
22 | Ship URL: [https://hackclub.slack.com/abc ](https://hackclub.slack.com/archives/C0M8PUPU6/p1725421150707059)
23 |
24 | Video Demo URL: https://youtu.be/3SUyRrV-N0c
25 |
--------------------------------------------------------------------------------
/submissions/StudyBits/README.md:
--------------------------------------------------------------------------------
1 | **Name**: StudyBits
2 |
3 | **Description**: StudyBits helps you avoid cramming for your exams by allowing you to study on your phone. You can simply subscribe to a course, which will add a set of questions to your question pool. Then, you can answer questions from your question pool by going to the “Answer” tab in the app which will randomly select a question for you to answer. In the future, we plan to implement an algorithm which selectively chooses questions which will maximize your learning in combination with spacial repetition. You might be wondering who creates the questions, well YOU do! To create questions, you simply create a channel and a course with whatever units you would like. Then, you create questions in the create tab to your heart’s content. WE NEED YOU TO CREATE USEFUL COURSES! Right now, all we have is a filler brainrot course, so we encourage you to make usable courses (or courses on how to mew). In the future, we plan to use artificial intelligence to inflate our question sets. Finally, you can use our app to motivate you by competing for a spot on the leaderboard. By answering questions correctly, you gain points which rank you higher on our leaderboard, we plan to make this algorithm more complex in the future. Try to beat the top user who is at 10000003 points.
4 |
5 | **GitHub URL**: https://github.com/StudyBits-App/StudyBits
6 |
7 | **How did you build this**: I built this app with my friend using React Native, Firebase, and Expo. We used React Native, specifically Expo, to create the app, Firebase to store the data and for authentication.
8 |
9 | **How many hours did you spend on this**: Around 50 hours with my partner and I combined
10 |
11 | **Did you use #arcade to log your progress?**: I used #arcade to log my progress initially, but I noticed it reduced my productivity, so the latter half of the project I didn't use it.
12 |
13 | **Testflight link**: https://testflight.apple.com/join/t0SncOyx
14 |
15 | **How many users on testflight?**: 8
16 |
17 | **Ship URL**: https://hackclub.slack.com/archives/C0M8PUPU6/p1724898778049579
18 |
19 | **Video Demo URL**: [https://cloud-3296r72c1-hack-club-bot.vercel.app/0screenshare\_-_2024-08-28_9_31_46_pm.mp4](https://cloud-3296r72c1-hack-club-bot.vercel.app/0screenshare_-_2024-08-28_9_31_46_pm.mp4)
20 |
--------------------------------------------------------------------------------
/website/styles/globals.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "VC Garamond";
3 | src: url("/VCGaramond.otf") format("opentype");
4 | }
5 |
6 | @font-face {
7 | font-family: 'Phantom Sans';
8 | src: url('https://assets.hackclub.com/fonts/Phantom_Sans_0.7/Regular.woff') format('woff'),
9 | url('https://assets.hackclub.com/fonts/Phantom_Sans_0.7/Regular.woff2') format('woff2');
10 | font-weight: normal;
11 | font-style: normal;
12 | }
13 |
14 | @font-face {
15 | font-family: 'Phantom Sans';
16 | src: url('https://assets.hackclub.com/fonts/Phantom_Sans_0.7/Bold.woff') format('woff'),
17 | url('https://assets.hackclub.com/fonts/Phantom_Sans_0.7/Bold.woff2') format('woff2');
18 | font-weight: bold;
19 | font-style: normal;
20 | }
21 |
22 | @tailwind base;
23 | @tailwind components;
24 | @tailwind utilities;
25 |
26 | html {
27 | @apply scroll-smooth;
28 | }
29 |
30 | body {
31 | @apply bg-hack-smoke font-sans text-hack-black;
32 | }
33 |
34 | h1,
35 | h2 {
36 | @apply font-sans font-bold text-red;
37 | }
38 |
39 | h3,
40 | h4,
41 | h5,
42 | h6 {
43 | @apply font-sans text-hack-black;
44 | }
45 |
46 | .badge {
47 | @apply rounded-md text-red border-2 border-red px-4 py-2 font-medium text-xl font-sans text-center w-fit;
48 | }
49 |
50 | /* Hack Club button styles */
51 | .btn {
52 | @apply rounded-lg px-4 py-2 font-medium text-center transition duration-200 shadow-sm;
53 | }
54 |
55 | .btn-primary {
56 | @apply bg-red text-white hover:bg-red/90;
57 | }
58 |
59 | .btn-outline {
60 | @apply border-2 border-red text-red hover:bg-red hover:text-white;
61 | }
62 |
63 | .header-gradient {
64 | background: linear-gradient(90deg, #ec3750 0%, #ff8c37 100%);
65 | }
66 |
67 | .section-padding {
68 | @apply py-12 md:py-16 lg:py-24;
69 | }
70 |
71 | .card {
72 | @apply bg-white rounded-xl shadow-md hover:shadow-lg transition duration-200 overflow-hidden;
73 | }
74 |
75 | /* Fixes Tailwind h-screen on iPhones */
76 | @supports (-webkit-touch-callout: none) {
77 | .h-screen {
78 | height: -webkit-fill-available;
79 | }
80 | }
81 |
82 | /* Fixes outline style for inputs on Safari */
83 | input:focus {
84 | outline: none;
85 | }
86 |
87 | footer a {
88 | @apply decoration-dotted underline italic hover:decoration-wavy hover:text-red;
89 | }
90 |
91 | .carousel .slide img {
92 | width: auto !important;
93 | }
94 |
95 | .carousel img {
96 | width: auto !important;
97 | }
98 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hack Club Cider
2 |
3 | A $100 grant for an Apple Developer Membership.
4 |
5 | 
6 |
7 | ## How to get started?
8 |
9 | **Prompt:** Build an app that improves an aspect of your (and your friends’) lives
10 |
11 | 1. **Submit an app demo and we'll help you get it on testflight** - [Form link](https://forms.hackclub.com/t/jALEZHqGE2us)
12 | 2. **Build your app** - Build your app to flesh it out even more and try to meet all the submission requirements.
13 | 3. **Submit your app** - Make a pull request adding a folder with your app's name in the `submissions` folder.
14 | 4. **Launch your app** - Get $100 to buy an Apple Developer Membership and publish your app on the App Store.
15 |
16 | ## Submission Criteria
17 |
18 | - Your app must be open-source, original, unique & built using either React Native or SwiftUI
19 | - It is recommended to use #hack-hour to log your progress while building the app.
20 | - The app should solve a real problem or add significant value to the users' lives. Describe how the app will impact its users and what specific issues it addresses.
21 | - The app should have at least five unique screens (e.g., home, profile, settings, notifications, and a feature-specific screen).
22 | - The app must include at least three core features that work together to create a cohesive experience. For example, a social network app could include user profiles, a news feed, and direct messaging.
23 | - The app must have some sort of data management system, using either local storage, cloud databases, or APIs.
24 | - The app could involve integrating with external APIs, or using advanced features of React Native or SwiftUI.
25 | - The app should have a clean, user-friendly design that is easy to navigate and visually appealing.
26 |
27 | ## Make Your PR
28 |
29 | 1. Fork the `cider` repository
30 |
31 | 
32 |
33 | 2. Open the `submissions` folder
34 | 3. Tap "Add File"
35 |
36 | 
37 |
38 | 4. Enter the name of your file to be the name of your project followed by README.md - For example: `cool-recipes/README.md`
39 | 5. See `submissions/README.md` to format your submission
40 | 6. Submit your iOS app submission by opening a PR
41 |
42 | 
43 |
44 | 7. Get your PR merged!
45 |
46 | 8. Publish it on the App Store :)
47 |
--------------------------------------------------------------------------------
/website/components/head.js:
--------------------------------------------------------------------------------
1 | import Head from 'next/head'
2 |
3 | export default function HeadObject({children}) {
4 | const title = "Hack Club - Cider";
5 | const description = "Design, Code, and Ship an iOS app to the App Store in 30 days with Hack Club's Cider program. Get a $100 grant for an Apple Developer Membership!";
6 | const image = "https://cloud-3n5q60w3u-hack-club-bot.vercel.app/0cider-banner.png";
7 | const url = "https://cider.hackclub.com";
8 |
9 | return (
10 |
11 |
12 |
13 |
14 | {title}
15 |
16 | {/* Primary Meta Tags */}
17 |
18 |
19 |
20 |
21 |
22 | {/* Open Graph / Facebook */}
23 |
24 |
25 |
26 |
27 |
28 |
29 | {/* Twitter */}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | {/* Favicons */}
39 |
40 |
41 |
42 | {/* Analytics */}
43 |
44 |
45 | {/* iOS App Banner */}
46 |
47 |
48 | {/* Theme Color */}
49 |
50 |
51 | {children}
52 |
53 | )
54 | }
55 |
--------------------------------------------------------------------------------
/submissions/NexTB/README.md:
--------------------------------------------------------------------------------
1 | # Name
2 | NexTB
3 |
4 | # Description
5 | NexTB is a React Native app that provides real-time tracking for trams, buses, and trolleybuses in Bucharest. It uses live data from the official Societatea de Transport București (STB) API, the TPBI API, and GTFS datasets to display detailed information about each vehicle—such as its ID, license plate, passenger count, and estimated arrival time.
6 | What makes NexTB unique is its practical, user-focused improvements. It goes beyond just showing when the next bus or tram will arrive—it also includes an image of the approaching vehicle and shows whether it has functional air conditioning (AC).
7 | This feature was added based on real user experience: during hot summer days, many Bucharest buses become unbearable due to broken AC units and poor ventilation. The app identifies these “No AC” vehicles based on first-hand data collected from past rides, helping users avoid them when possible.
8 | ## How it helps:
9 | NexTB solves a real, everyday problem for commuters in Bucharest by making public transport more predictable and bearable. It helps you:
10 | - Know exactly when your tram, bus, or trolleybus will arrive
11 | - See how crowded the vehicle is before it gets there
12 | - Avoid vehicles without air conditioning on hot days
13 | - Get a visual of the vehicle coming
14 |
15 | In short, NexTB gives you more control, comfort, and clarity during your daily commute.
16 |
17 | # GitHub URL
18 | [https://github.com/rocristoi/NexTB](https://github.com/rocristoi/NexTB/)
19 |
20 | # How did you build this
21 | I started building NexTB as a way to apply what I was learning while studying React Native. The first version was simple and focused on core functionality like showing live arrival times using the STB and TPBI APIs. I uploaded it to TestFlight early on to test it in real conditions and get feedback.
22 | While working on other projects like HCB Mobile, I gained deeper experience with React Native and best practices for mobile development. This helped me come back to NexTB with fresh ideas and better code structure. I tested it daily during my own commute, which helped me quickly identify bugs and areas for improvement.
23 |
24 | Over time, I optimized the app to make it faster, more reliable, and more helpful in real-world scenarios.
25 | # Did you use Hakatime to log your progress?
26 | Yes
27 |
28 | # Testflight link:
29 | [https://testflight.apple.com/join/EafRFXRQ](https://testflight.apple.com/join/EafRFXRQ)
30 | # How many users on testflight?:
31 | 4 - me, my brother, my girlfriend and a friend
32 |
33 | # Ship URL:
34 | [https://hackclub.slack.com/archives/C0M8PUPU6/p1753198880338159](https://hackclub.slack.com/archives/C0M8PUPU6/p1753198880338159)
35 |
36 | # Video Demo URL:
37 | - [Usage of the app](https://drive.google.com/file/d/1vUpiq2NspcSXt97rJm0_1rPJaoW4Aadx/view) - a video that fully demonstrates how the app works. It also shows how you can add/remove vehicles from the faulty AC list.
38 | - [Real life demo](https://drive.google.com/file/d/1FaGDOe4yaI82zab11RXlez2XTjMFIUpN/view?usp=sharing) - here you can see that the bus is the same model as shown in the picture and that the license plate numbers match
39 |
--------------------------------------------------------------------------------
/website/components/footer.js:
--------------------------------------------------------------------------------
1 | // Credits to @crnicholson for the footer
2 |
3 | export default function Footer() {
4 | return (
5 |
70 | );
71 | }
72 |
--------------------------------------------------------------------------------
/website/pages/api/submissions.js:
--------------------------------------------------------------------------------
1 | import Airtable from "airtable";
2 | import { Client } from "@googlemaps/google-maps-services-js";
3 |
4 | const API_SECRET_KEY = process.env.API_SECRET_KEY;
5 | const GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;
6 |
7 | const googleMapsClient = new Client({});
8 |
9 | if (!API_SECRET_KEY) {
10 | console.warn('WARNING: API_SECRET_KEY is not set in environment variables. API will be accessible without authentication in development mode only.');
11 | }
12 |
13 | if (!GOOGLE_MAPS_API_KEY) {
14 | console.warn('WARNING: GOOGLE_MAPS_API_KEY is not set in environment variables. Geocoding functionality will not work correctly.');
15 | }
16 |
17 | const base = new Airtable({ apiKey: process.env.AIRTABLE_API_KEY }).base(
18 | process.env.AIRTABLE_BASE_ID
19 | );
20 |
21 | const geocodeCache = new Map();
22 |
23 | async function getCoordinates(city, country) {
24 | if (!city && !country) return null;
25 | if (!GOOGLE_MAPS_API_KEY) return null;
26 |
27 | // Create a cache key from city and country
28 | const cacheKey = `${city || ''}-${country || ''}`;
29 |
30 | // Check if we already have these coordinates cached
31 | if (geocodeCache.has(cacheKey)) {
32 | return geocodeCache.get(cacheKey);
33 | }
34 |
35 | try {
36 | const locationQuery = [city, country].filter(Boolean).join(", ");
37 |
38 | const response = await googleMapsClient.geocode({
39 | params: {
40 | address: locationQuery,
41 | key: GOOGLE_MAPS_API_KEY
42 | },
43 | timeout: 5000
44 | });
45 |
46 | if (response.data.results && response.data.results.length > 0) {
47 | const location = response.data.results[0].geometry.location;
48 | const result = {
49 | latitude: location.lat,
50 | longitude: location.lng
51 | };
52 |
53 | geocodeCache.set(cacheKey, result);
54 |
55 | return result;
56 | }
57 |
58 | return null;
59 | } catch (error) {
60 | console.error('Geocoding error:', error.message);
61 | return null;
62 | }
63 | }
64 |
65 | export default async function handler(req, res) {
66 | const isDev = process.env.NODE_ENV === 'development';
67 | const skipAuth = isDev && !API_SECRET_KEY;
68 |
69 | if (!skipAuth) {
70 | const authHeader = req.headers.authorization;
71 |
72 | if (!authHeader || !authHeader.startsWith('Bearer ')) {
73 | return res.status(401).json({ error: "Unauthorized - Missing authentication" });
74 | }
75 |
76 | const providedToken = authHeader.split(' ')[1];
77 |
78 | try {
79 | const crypto = require('crypto');
80 | const expectedToken = API_SECRET_KEY;
81 | const isValid = crypto.timingSafeEqual(
82 | Buffer.from(providedToken, 'base64'),
83 | Buffer.from(expectedToken, 'base64')
84 | );
85 |
86 | if (!isValid) {
87 | return res.status(403).json({ error: "Forbidden - Invalid authentication token" });
88 | }
89 | } catch (e) {
90 | return res.status(403).json({ error: "Forbidden - Invalid authentication token" });
91 | }
92 | }
93 |
94 | try {
95 | const records = await base("Demo Submissions").select({ view: "Granted" }).all();
96 |
97 | const submissions = records.map((record) => {
98 | const city = record.get("City") || null;
99 | const country = record.get("Country") || null;
100 |
101 | const coordinates = record.get("Coordinates") || null;
102 |
103 | return {
104 | id: record.id,
105 | name: record.get("App Name"),
106 | description: record.get("Short Description"),
107 | author: `${record.get("First Name")} ${record.get("Last Name") || ""}`,
108 | githubUsername: record.get("GitHub username"),
109 | slackId: record.get("Hack Club Slack ID"),
110 | githubUrl: record.get("Code URL (URL to GitHub / other code host repo)"),
111 | testflightUrl: record.get("TestFlight URL"),
112 | demoUrl: record.get("Live URL (URL to deployed site)") || record.get("TestFlight URL"),
113 | videoDemo: record.get("Video Demo URL"),
114 | expoSnackUrl: record.get("Expo Snack URL"),
115 | images: record.get("Screenshot") || [],
116 | location: {
117 | city,
118 | country,
119 | coordinates
120 | }
121 | };
122 | });
123 |
124 | const geocodingPromises = [];
125 |
126 | submissions.forEach((submission, index) => {
127 | const { city, country } = submission.location;
128 |
129 | if (submission.location.coordinates || (!city && !country)) {
130 | return;
131 | }
132 |
133 | geocodingPromises.push(
134 | getCoordinates(city, country).then(coordinates => {
135 | if (coordinates) {
136 | submission.location.coordinates = coordinates;
137 | }
138 | })
139 | );
140 | });
141 |
142 | if (geocodingPromises.length > 0) {
143 | await Promise.all(geocodingPromises);
144 | }
145 |
146 | res.status(200).json(submissions.reverse());
147 | } catch (error) {
148 | console.error("Error fetching submissions:", error);
149 | res.status(500).json({ error: "Error fetching submissions" });
150 | }
151 | }
152 |
--------------------------------------------------------------------------------
/website/public/flag.svg:
--------------------------------------------------------------------------------
1 |
29 |
--------------------------------------------------------------------------------
/website/pages/submissions.js:
--------------------------------------------------------------------------------
1 | import { useState } from "react";
2 | import { motion } from "framer-motion";
3 | import Image from "next/image";
4 | import { Carousel } from "react-responsive-carousel";
5 | import "react-responsive-carousel/lib/styles/carousel.min.css";
6 | import Footer from "../components/footer";
7 | import Head from "../components/head";
8 | import Meta from "../components/Meta";
9 | import Airtable from "airtable";
10 | import { Client } from "@googlemaps/google-maps-services-js";
11 |
12 | const geocodeCache = new Map();
13 |
14 | const getAirtableBase = () => {
15 | return new Airtable({ apiKey: process.env.AIRTABLE_API_KEY }).base(
16 | process.env.AIRTABLE_BASE_ID
17 | );
18 | };
19 |
20 | async function getCoordinates(city, country) {
21 | if (!city && !country) return null;
22 | if (!process.env.GOOGLE_MAPS_API_KEY) return null;
23 |
24 | const cacheKey = `${city || ''}-${country || ''}`;
25 |
26 | if (geocodeCache.has(cacheKey)) {
27 | return geocodeCache.get(cacheKey);
28 | }
29 |
30 | try {
31 | const googleMapsClient = new Client({});
32 | const locationQuery = [city, country].filter(Boolean).join(", ");
33 |
34 | const response = await googleMapsClient.geocode({
35 | params: {
36 | address: locationQuery,
37 | key: process.env.GOOGLE_MAPS_API_KEY
38 | },
39 | timeout: 5000
40 | });
41 |
42 | if (response.data.results && response.data.results.length > 0) {
43 | const location = response.data.results[0].geometry.location;
44 | const result = {
45 | latitude: location.lat,
46 | longitude: location.lng
47 | };
48 |
49 | // Cache the result for future use
50 | geocodeCache.set(cacheKey, result);
51 |
52 | return result;
53 | }
54 |
55 | return null;
56 | } catch (error) {
57 | console.error('Geocoding error:', error.message);
58 | return null;
59 | }
60 | }
61 |
62 | // Server-side data fetching
63 | export async function getServerSideProps() {
64 | try {
65 | const base = getAirtableBase();
66 | const records = await base("Demo Submissions").select({ view: "Granted" }).all();
67 |
68 | // Process all submissions
69 | const submissions = records.map((record) => {
70 | const city = record.get("City") || null;
71 | const country = record.get("Country") || null;
72 |
73 | // Use existing coordinates if available in the record
74 | const coordinates = record.get("Coordinates") || null;
75 |
76 | return {
77 | id: record.id,
78 | name: record.get("App Name"),
79 | description: record.get("Short Description"),
80 | author: `${record.get("First Name")} ${record.get("Last Name") || ""}`,
81 | githubUsername: record.get("GitHub username"),
82 | slackId: record.get("Hack Club Slack ID"),
83 | githubUrl: record.get("Code URL (URL to GitHub / other code host repo)"),
84 | demoUrl: record.get("Live URL (URL to deployed site)") || record.get("TestFlight URL"),
85 | images: record.get("Screenshot") || [],
86 | location: {
87 | city,
88 | country,
89 | coordinates
90 | }
91 | };
92 | });
93 |
94 | const geocodingPromises = [];
95 |
96 | submissions.forEach((submission) => {
97 | const { city, country } = submission.location;
98 |
99 | if (submission.location.coordinates || (!city && !country)) {
100 | return;
101 | }
102 |
103 | geocodingPromises.push(
104 | getCoordinates(city, country).then(coordinates => {
105 | if (coordinates) {
106 | submission.location.coordinates = coordinates;
107 | }
108 | })
109 | );
110 | });
111 |
112 | if (geocodingPromises.length > 0) {
113 | await Promise.all(geocodingPromises);
114 | }
115 |
116 | return {
117 | props: {
118 | submissions: submissions.reverse(),
119 | },
120 | };
121 | } catch (error) {
122 | console.error("Error fetching submissions:", error);
123 | return {
124 | props: {
125 | submissions: [],
126 | error: error.message,
127 | },
128 | };
129 | }
130 | }
131 |
132 | export default function SubmissionsPage({ submissions, error }) {
133 | const [searchTerm, setSearchTerm] = useState("");
134 | const [selectedSubmission, setSelectedSubmission] = useState(null);
135 |
136 | const isLoading = !submissions && !error;
137 |
138 | const filteredSubmissions = submissions ? submissions.filter(
139 | (submission) =>
140 | submission.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
141 | submission.description.toLowerCase().includes(searchTerm.toLowerCase()) ||
142 | submission.author.toLowerCase().includes(searchTerm.toLowerCase()) ||
143 | (submission.location?.city && submission.location.city.toLowerCase().includes(searchTerm.toLowerCase())) ||
144 | (submission.location?.country && submission.location.country.toLowerCase().includes(searchTerm.toLowerCase()))
145 | ) : [];
146 |
147 | return (
148 |