hackathon-starter README

The project's README from github.com/sahat/hackathon-starter. As one markdown file: README.md.

Hackathon Starter

Ask DeepWiki

Live Demo: Link

Jump to What's new?

A boilerplate for Node.js web applications.

If you have attended any hackathons in the past, then you know how much time it takes to get a project started: decide on what to build, pick a programming language, pick a web framework, pick a CSS framework. A while later, you might have an initial project up on GitHub, and only then can other team members start contributing. Or how about doing something as simple as Sign in with Facebook authentication? You can spend hours on it if you are not familiar with how OAuth 2.0 works.

When I started this project, my primary focus was on simplicity and ease of use. I also tried to make it as generic and reusable as possible to cover most use cases of hackathon web apps, without being too specific. In the worst case, you can use this as a learning guide for your projects, if for example you are only interested in Sign in with Google authentication and nothing else.

Testimonials

"Nice! That README alone is already gold!"
— Adrian Le Bas

"Awesome. Simply awesome."
— Steven Rueter

"I'm using it for a year now and many projects, it's an awesome boilerplate and the project is well maintained!"
— Kevin Granger

"Small world with Sahat's project. We were using his hackathon starter for our hackathon this past weekend and got some prizes. Really handy repo!"
— Interview candidate for one of the companies I used to work with.

Modern Theme

Flatly Bootstrap Theme

API Examples

Table of Contents

Features

Prerequisites

Note: If you are new to Node or Express, you may find Node.js & Express From Scratch series helpful for learning the basics of Node and Express. Alternatively, here is another great tutorial for complete beginners - Getting Started With Node.js, Express, MongoDB.

Getting Started

Step 1: The easiest way to get started is to clone the repository:

# Get the latest snapshot
git clone https://github.com/sahat/hackathon-starter.git myproject

# Change directory
cd myproject

# Install NPM dependencies
npm install

# Then simply start your app
npm start

Note: I highly recommend installing Nodemon. It watches for any changes in your node.js app and automatically restarts the server. Once installed, instead of node app.js use nodemon app.js. It will save you a lot of time in the long run, because you won't need to manually restart the server each time you make a small change in code. To install, run sudo npm install -g nodemon.

Step 2: Obtain API Keys and change configs if needed After completing step 1 and locally installing MongoDB, you should be able to access the application through a web browser and use local user accounts. However, certain functions like API integrations may not function correctly until you obtain specific keys from service providers. The keys provided in the project serve as placeholders, and you can retain them for features you are not currently utilizing. To incorporate the acquired keys into the application, you have two options:

  1. Set environment variables in your console session: Alternatively, you can set the keys as environment variables directly through the command prompt. For instance, in bash, you can use the export command like this: export FACEBOOK_SECRET=xxxxxx. This method is considered a better practice as it reduces the risk of accidentally including your secrets in a code repository.
  2. Replace the keys in the .env.example file: Open the .env.example file and update the placeholder keys with the newly acquired ones. This method has the risk of accidental checking-in of your secrets to code repos.

What to get and configure:

Step 3: Setup an HTTPS proxy to access the app with an https address: See

Step 4: Develop your application and customize the experience

Step 5: Optional - deploy to production See:

HTTPS Proxy:

If you want to use an API that requires HTTPS (for example, GitHub or Facebook), you need to run the app with an HTTPS URL. You can do this by setting up an HTTPS proxy using either ngrok or Cloudflare. Note: When using an HTTPS proxy, you may get a CSRF mismatch error if you try to directly access the app at http://localhost:8080 instead of the HTTPS proxy address.

ngrok

Cloudflare

cloudflared tunnel --url http://localhost:8080

Cloudflare with your own domain name

If you own a domain managed by Cloudflare, you can use Cloudflare's Zero Trust portal to set up a tunnel to your app that is activated by a system service. Alternatively, you can create a tunnel and route a subdomain you like to your app using their CLI:

cloudflared tunnel login
cloudflared tunnel create myapptunnel
cloudflared tunnel route dns myapptunnel myappsubdomain.mydomain.com
cloudflared tunnel --url http://localhost:8080 run myapptunnel

Then set BASE_URL to the HTTPS address for the tunnel. Note that the tunnel and DNS route are a one-time setup. To reactivate the HTTPS tunnel to your app later, such as after a system restart, just rerun:

cloudflared tunnel --url http://localhost:8080 run myapptunnel

To clean up your own domain's related configurations when you're done:

Obtaining API Keys

You will need to obtain appropriate credentials (Client ID, Client Secret, API Key, or Username & Password) for API and service providers which you need. See Step 2 in the Getting started section for more info.

SMTP

Obtain SMTP credentials from a provider for transactional emails. Set the SMTP_USER, SMTP_PASSWORD, and SMTP_HOST environment variables accordingly. When picking the SMTP host, keep in mind that the app is configured to use secure SMTP transmissions over port 465 out of the box. You have the flexibility to select any provider that suits your needs or take advantage of one of the following providers, each offering a free tier for your convenience.

Provider Free Tier Website
SMTP2Go 1000 emails/month for free https://www.smtp2go.com
Brevo 300 emails/day for free https://www.brevo.com

Facebook

Note: After a successful sign-in with Facebook, a user will be redirected back to the home page with appended hash #_=_ in the URL. It is not a bug. See this Stack Overflow discussion for ways to handle it.


Foursquare


GitHub


GIPHY


Google

Sign in with Google:

Other APIs:

Open the Enabled APIs & services page for your project in the Google Cloud Console (APIs & Services). Click + Enable APIs and services (top of the page), find the services you need, and enable them:

Next, create API keys for the services you enabled:


Discord

hackathon-starter (sahat/hackathon-starter)

Searching Database…

这是什么?Hackathon Starter 是一个 Node.js 网页应用的脚手架项目,内置登录、OAuth 以及数十种 API 集成,让你在黑客松期间无需从零开始搭建这些功能。
这是框架,还是我只需克隆下来再修改的启动模板?它是一个现成的 MVC 项目,你需要克隆下来再修改,而不是作为依赖项安装的框架。
我该怎么把它跑起来?克隆仓库,安装 MongoDB(本地安装或托管的 Atlas),运行 npm install,然后用 npm run start 或 nodemon app.js 启动。
运行之前,我需要先安装什么?你需要 Node.js LTS 24+、MongoDB(本地安装或托管的 Atlas),以及系统编译工具(Mac 上为 Xcode,Windows 上为 WSL/VS 或 Ubuntu build-essential)。
所有功能都要有 API 密钥才能运行吗?不需要。应用可以在本地运行,对于你没用到的功能会使用占位密钥;只有启用某个集成时,才需要获取真实的密钥(SMTP、reCAPTCHA 或特定的 OAuth 服务商密钥)。
这个项目到底是给谁用的?给那些想在黑客松期间省去样板配置,或想快速原型开发一个已集成认证和第三方 API 的 Node.js 应用的开发者。
开箱即用支持哪些登录方式?本地邮箱/密码登录、无密码登录、Passkey/生物识别、双因素认证(2FA),以及使用 Google、Microsoft、Facebook、LinkedIn、X、Twitch、GitHub 和 Discord 的 OAuth 2.0 登录。
它包含 AI 相关的示例吗?有。它包含一个使用 ReAct 推理、工具调用并以 MongoDB 持久化会话的 AI 智能体示例,还有一个带语义与嵌入缓存的 RAG 示例,支持 GPT-OSS、Qwen、DeepSeek 等模型,可通过 LangChain、Groq 和 Hugging Face 调用。
如何通过 HTTPS 测试应用的 OAuth 回调?使用 ngrok 或 Cloudflare Tunnel 提供的 HTTPS 代理,然后将 BASEURL 设置为生成的 HTTPS 转发地址。
除了登录,还预先接好了哪些 API?数十个,包括 Stripe、Twilio、PayPal、Google Maps、Google Drive/Sheets、GIPHY、Steam、Twitch、Alpha Vantage、New York Times,以及网页抓取示例。
Creator
sahat
Size
17.4 MB
Stars
35.3K
Age
12y
Commits · 90 Days