Discord Login Flow
Express.js serving static HTML files incorporating a Discord OAuth login flow to a protected dashboard.
Node.js Web Dashboards zlizz-এর তৈরি
এই টেমপ্লেট ডিপ্লয় করুন
GitHub-এ খুলুন
পরিচিতি
README.md
সূচিপত্র
Discord Login Template
An Express template that adds a "Login with Discord" flow (OAuth2) and a protected dashboard page, using plain HTML/CSS/JS on the frontend — no templating engine required.
How it works
- User clicks Login with Discord on
index.html, which sends them to/auth/discord. - That route redirects them to Discord's consent screen.
- After approving, Discord redirects back to
/auth/discord/callbackwith a code. - The server exchanges that code for an access token, fetches the user's Discord profile, and stores it in a server-side session.
- The user is redirected to
/dashboard, which calls/api/userto fetch and display their info. /auth/logoutdestroys the session and sends them back to the login page.
/dashboard is protected — if there's no active session, requesting it redirects straight back to /. Static files are served without their .html extension (express.static is configured with extensions: ['html']), so /dashboard maps to public/dashboard.html and / maps to public/index.html.
Getting Started
Create a Discord application
- Go to the Discord Developer Portal and click New Application.
- Under OAuth2 → General, copy your Client ID and Client Secret.
- Under OAuth2 → Redirects, add:(update the port/domain if you change it later)
http://localhost:3000/auth/discord/callback
3. Set up your environment variables
Copy the example env file:
cp example.env .env
Then fill in .env:
PORT=3000
DISCORD_CLIENT_ID=your_client_id
DISCORD_CLIENT_SECRET=your_client_secret
DISCORD_REDIRECT_URI=http://localhost:3000/auth/discord/callback
SESSION_SECRET=any_long_random_string
Project Structure
.
├── index.js # Express server, session setup, OAuth routes
├── example.env # Rename to .env in production
├── package.json
├── example.env
└── public/
├── index.html # Login page
├── dashboard.html # Protected dashboard (client-side rendered)
└── css/
└── styles.css
Customizing
- Scopes — the login route requests
identify email. Add more scopes (e.g.guilds) in thescopeparameter inside the/auth/discordroute inindex.js, and update the callback to fetch/store any extra data you need. - Session storage — sessions currently live in memory, which resets on server restart and won't scale across multiple server instances. For production, swap in a persistent session store (e.g.
connect-redisorconnect-mongo). - Dashboard content —
dashboard.htmlcurrently shows username, tag, user ID, and email. Extend the/api/userroute inindex.jsto return more data, and update the script indashboard.htmlto display it. - Styling — all styles are in
public/css/styles.css.
Notes
- Requires Node 18+ (uses the built-in global
fetch). - Never commit your real
.envfile — onlyexample.envshould be checked into version control.
ভেরিয়েবল
ডিপ্লয়ের সময় আপনি এগুলো পূরণ করবেন। এগুলো আপনার ডিপ্লয়মেন্টের এনভায়রনমেন্ট ভেরিয়েবল হয়ে যায়।
PORTPORT Bot-hosting.net assigned Port আবশ্যকDISCORD_CLIENT_IDDISCORD_CLIENT_ID From Discord Developer Portal আবশ্যকDISCORD_CLIENT_SECRETDISCORD_CLIENT_SECRET From Discord Developer Portal আবশ্যক, সিক্রেটDISCORD_REDIRECT_URIDISCORD_REDIRECT_URI The callback link after the user approves the Discord Login flow আবশ্যকSESSION_SECRETSESSION_SECRET Randomly generated. See example.env আবশ্যক, সিক্রেট
কীভাবে ডিপ্লয় করবেন
- 1 ডিপ্লয় পেজ খুলুনআপনার ডিপ্লয়মেন্টের নাম দিন। নিশ্চিত করার সময় সাইন ইন করবেন।
- 2 ভেরিয়েবল পূরণ করুনটেমপ্লেট যেসব মান চায়, সেগুলো আপনার ডিপ্লয়মেন্টের এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সংরক্ষিত হয়।
- 3 রিসোর্স দেখে নিনএটি আপনার প্ল্যানের শেয়ার্ড পুল থেকে নেয়, তারপর চালু হয়। প্রতিটি অ্যাকাউন্ট ফ্রি দিয়ে শুরু করে।