This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
Pixelate Game is an interactive image guessing game developed using Next.js and Tailwind CSS. This project is designed for the website pixelguessgame.com, where users can guess pixelated images.
To run the project locally, follow these steps:
Clone the repository:
git clone https://github.com/Jubstaaa/pixelate-game.git
Install dependencies:
cd pixelate-game
npm install
Set up environment variables:
Create a .env file in the root directory of the project and add the necessary configuration values.
Start the development server:
npm run dev
The application will run at http://localhost:3000.
To deploy the application using Vercel:
Alternatively, you can use the terminal:
vercel deploy
Contributions are welcome! Please share your suggestions and bug reports as issues or create a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
For questions or feedback, please reach out to Jubstaaa.
This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
LoL Config Editor is a simple and user-friendly tool built with modern web technologies to help League of Legends players customize, save, and switch between multiple game settings without launching the game. Perfect for players who use multiple accounts, share computers, or need different configurations for different game modes.
Follow these steps to download and use the tool:
Download the Tool
.exe file (e.g., lol-config-editor.exe).Run the Application
lol-config-editor.exe to launch the application.Start Customizing
This project was built using modern web technologies to ensure a smooth and responsive experience:
Save Configurations:
Switch Between Profiles:
Multi-User Support:
Account-Wide Settings:
This project is open source and available on GitHub. Feel free to explore, contribute, or report issues!
Contributions are welcome! If you have suggestions for new features, find a bug, or want to improve the code, feel free to:
A: No, it only edits configuration files that are safe and intended for user customization.
A: No, this tool only interacts with the configuration files and does not interfere with the game client or its processes.
A: Yes, itโs completely free and open source!
If you have any questions, feedback, or suggestions, feel free to reach out:
This project is licensed under the MIT License. See the LICENSE file for details.
Real-time collaborative pixel art editor built with Next.js, Socket.IO, TypeScript, and MongoDB.
This project is split into two parts:
client/: Next.js frontend application (deployed on Vercel)server/: Node.js + Socket.IO backend with MongoDB (deployed on Render.com)cd server
npm install
cp env.example .env
npm run dev
cd client
npm install
cp env.local.example .env.local
npm run dev
Create a new Web Service on Render.com
Connect your GitHub repository
Set build command: cd server && npm install && npm run build
Set start command: cd server && npm start
Add environment variables:
NODE_ENV=productionCLIENT_URL=https://your-vercel-app.vercel.appCORS_ORIGIN=https://your-vercel-app.vercel.appMONGODB_URI=your-mongodb-uriCreate a MongoDB instance on Render.com or use MongoDB Atlas and connect it to your server
NEXT_PUBLIC_SERVER_URL: Your Render.com server URLNEXT_PUBLIC_APP_NAME: My Pixel WorldPORT=3001
NODE_ENV=development
CORS_ORIGIN=*
CLIENT_URL=http://localhost:3000
MONGODB_URI=mongodb://localhost:27017/pixel-world
NEXT_PUBLIC_SERVER_URL=http://localhost:3001
NEXT_PUBLIC_APP_NAME=My Pixel World
MIT License
๐ฑ Iโm currently learning Unity
๐จโ๐ป All of my projects are available at ilkerbalcilar.com
๐ซ How to reach me ilkerbalcilartr@gmail.com
This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
Bu repo ลirketimiz iรงin HTML,CSS,JS kullanarak hazฤฑrladฤฑฤฤฑm responsive tanฤฑtฤฑm sayfasฤฑdฤฑr.

Bu repo ฤฐstanbul Geliลim รniversitesi Nesne Tabanlฤฑ Programlama dersi eลliฤinde Java programlama dili ile oluลturulmuล projeleri iรงerir.
Projeyi Reactjs ile kodladฤฑm, backend kฤฑsmฤฑ iรงin firebase kullandฤฑm. Kullancฤฑlฤฑlarฤฑn makale paylaลabildiฤi, profil sayfalarฤฑnฤฑn bulunduฤu ve belirli istatistiklerin paylaลฤฑldฤฑฤฤฑ bir proje geliลtirdim. Firebase config bilgileri aรงฤฑk olarak paylaลฤฑldฤฑ proje localde de รงalฤฑลtฤฑrฤฑlabilir.
https://jubstaa-bilgi-bankasi.netlify.app/
This project was bootstrapped with Create React App.
In the project directory, you can run:
npm startRuns the app in the development mode.
Open http://localhost:3000 to view it in your browser.
The page will reload when you make changes.
You may also see any lint errors in the console.
npm testLaunches the test runner in the interactive watch mode.
See the section about running tests for more information.
npm run buildBuilds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
See the section about deployment for more information.
npm run ejectNote: this is a one-way operation. Once you eject, you can't go back!
If you aren't satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
You don't have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
You can learn more in the Create React App documentation.
To learn React, check out the React documentation.
This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting
This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size
This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app
This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration
This section has moved here: https://facebook.github.io/create-react-app/docs/deployment
npm run build fails to minifyThis section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying pages/index.js. The page auto-updates as you edit the file.
API routes can be accessed on http://localhost:3000/api/hello. This endpoint can be edited in pages/api/hello.js.
The pages/api directory is mapped to /api/*. Files in this directory are treated as API routes instead of React pages.
To learn more about Next.js, take a look at the following resources:
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
This library provides a simple class-based interface for sending messages and various media types to a Telegram bot.
yarn add telegram-message-send
npm install telegram-message-send
import { TelegramBot } from 'telegram-message-send';
const botKey = 'YOUR_BOT_KEY';
const chatId = 'YOUR_CHAT_ID';
const bot = new TelegramBot(botKey, chatId);
async function sendMessages() {
await bot.sendMessage('Hello World');
await bot.sendPhoto('https://avatars.githubusercontent.com/u/100691616?s=200&v=4', 'Custom Caption');
await bot.sendAudio('https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3', 'Custom Caption');
await bot.sendDocument('https://s2.q4cdn.com/175719177/files/doc_presentations/Placeholder-PDF.pdf', 'Custom Caption');
await bot.sendLocation(41.084677113651814, 29.00455392606353);
await bot.sendContact('Ilker Balcilar', '+905555555555');
await bot.sendPoll('Which one would you prefer', ['Javascript', 'Typescript']);
await bot.sendDice('dice'); // or 'dart', 'basketball', etc.
}
sendMessages();
Create a Telegram bot with BotFather before connecting your bot to Telegram.
/newbot to create a new Telegram bot.botKey) for later steps./getid. You will get a reply back with your user ID.chatId).In order to receive a message from the bot, you must first send a message to the bot and create a chat.
new TelegramBot(botKey, chatId)botKey (string, required): Your Telegram bot's access token.chatId (string, required): The ID of the chat to send messages to.sendMessage(text)text (string, required): The message text to send.sendPhoto(photoURL, caption?)photoURL (string, required): URL of the photo to send.caption (string, optional): Photo caption.sendAudio(audioURL, caption?)audioURL (string, required): URL of the audio file to send.caption (string, optional): Audio caption.sendDocument(documentURL, caption?)documentURL (string, required): URL of the document to send.caption (string, optional): Document caption.sendVideo(videoURL, caption?)videoURL (string, required): URL of the video to send.caption (string, optional): Video caption.sendGIF(gifURL, caption?)gifURL (string, required): URL of the GIF to send.caption (string, optional): GIF caption.sendLocation(latitude, longitude)latitude (number, required): Latitude of the location.longitude (number, required): Longitude of the location.sendContact(name, phoneNumber)name (string, required): Contact's name.phoneNumber (string, required): Contact's phone number.sendPoll(question, options)question (string, required): Poll question.options (string[], required): Array of poll options.sendDice(type?)type (string, optional): Type of dice to send ('dice', 'dart', 'basketball', 'football', 'bowling', 'slot'). Defaults to 'dice'.
Evime sรผrekli gelip giden ziyaretรงilerin ev ekonomisine katkฤฑ saฤlamasฤฑ aรงฤฑsฤฑndan geliลtirdiฤim bir baฤฤฑล uygulamasฤฑ.

Canlฤฑ รถnizlemesini gรถrmek iรงin tฤฑklayฤฑn. (https://jubstaa-house.netlify.app/)
- react
- firebase
- daisyui
- Baฤฤฑลcฤฑ kendi profilini ekleyebilir.
- ฤฐhtiyaรง listesine รผrรผn ve fiyatฤฑ eklenebilir. (รrรผn panelden admin tarafฤฑndan satฤฑn alฤฑndฤฑ olarak iลaretlenebilir.)
- Nakit veya havale รถdeme bildirimi yapฤฑlabilir. (รdemeler panelden admin tarafฤฑnca onaylanฤฑr.)
- รdeme bildirimleri adminlere telegram รผzerinden bildirim olarak gรถnderilir.
- Kullanฤฑcฤฑ loglarฤฑ herkes tarafฤฑndan gรถrรผntรผlenebilir.
I published the project of my MERN course adding new features. An application where you can share the places you like.
Click to view live demo (https://jubstaa-place-share.netlify.app/)
- react
- react-router-dom
- react-hot-toast
- axios
- expressjs
- mongoDB
- mongoose
- jsonwebtoken
- bcryptjs
- firebase storage bucket
- You can see the users in the app and the places they have shared.
- You can register.
- You can add a new place.
- You can delete and edit your places.

Blog application developed with Nextjs version 13. Sanity.io was used for panel and backend operations
Click to view live demo (https://next13-ts-blog.vercel.app/)
Click to use panel (https://next13-ts-blog.vercel.app/studio/)
Email: nextjs13blog@gmail.com
Password: fm7#PTEscAiuT5L
- nextjs
- tailwind
- sanity
- groq

Click to view live demo (https://jubstaa-arbit-blog.netlify.app/)
- react
- tailwind
- redux
- redux-toolkit
- formik
- yup
- axios
- classnames
- react-icons
- react-hot-toast
- react-helmet

Click to view live demo (https://dplus-clone.vercel.app/)
- create-next-app
- next ssr
- next auth
- firestore
- tailwind
- heroicons
- react-responsive-carousel
- react-player
- react-indiana-drag-scroll
- html-react-parser
React App where you can see the messages sent to the application and send a message after logging in.

Click to view live demo (https://jubstaa-leave-a-message-to-the-world.netlify.app/)
- react
- react-router-dom
- redux
- redux-thunk
- firebase realtime database
- firebase auth
- PrivateRoute
- history
- bootstrap
- create-react-app
- you can see sent messages
- you can see the profile picture, name, and date and time of the sender of the message.
- you can send message after login with google auth
- when you log in, your profile picture will appear in the navbar and you can log out
- after logging in, you can edit and delete your own messages.
- responsive design
This project is a basic calculator application built using TypeScript and React.JS for the Bayzat Frontend Test assignment. The focus is on demonstrating TypeScript's static typing capabilities, handling JavaScript's calculation quirks, and implementing a clean, maintainable codebase with comprehensive testing.
๐ Deployed on Vercel: https://bayzat-calculator-jubstaa.vercel.app
# Clone the repository
git clone https://github.com/Jubstaaa/bayzat-calculator.git
cd calculator
# Install dependencies
npm install
# Start development server
npm run dev
# Clone the repository
git clone https://github.com/Jubstaaa/bayzat-calculator.git
cd calculator
# Build Docker image
docker build -t calculator-app .
# Start development server
docker run -p 5173:5173 -v $(pwd):/app calculator-app
# Or use Docker Compose
docker-compose up app
The application runs at http://localhost:5173
# Run all unit tests
npm run test
# Run tests with coverage
npm run test:coverage
# Watch mode for development
npm run test:watch
# Run E2E tests in headless mode
npm run test:e2e
# Open Cypress GUI for interactive testing
npm run cy:open
Note: E2E tests verify the accuracy of calculations and ensure the application's reliability across different scenarios.
Problem: 0.1 + 0.2 resulted in 0.30000000000000004 instead of 0.3
Solution: Implemented rounding to 10 decimal places to avoid floating-point precision issues.
Problem: JavaScript throws Infinity for division by zero, which isn't user-friendly
Solution: Custom error handling with user-friendly "Division by zero is not allowed" message.
Problem: Very large numbers could overflow UI or become unreadable
Solution: Added wordBreak: 'break-all' CSS property to ensure large results wrap properly and remain readable.
Problem: Expressions ending with operators like 3+ would cause evaluation errors
Solution: Pre-evaluation sanitization that removes trailing operators before parsing.
Problem: Users could input invalid numbers like 1.2.3
Solution: Input validation that prevents multiple decimal points within the same number.
Problem: JavaScript's default operator precedence might not match user expectations Solution: JavaScript Function constructor automatically handles operator precedence correctly (multiplication/division before addition/subtraction).
The project uses GitHub Actions for automated testing, building, and deployment:
main branch๐ Checkout & Setup
๐งช Testing Phase
๐๏ธ Build Phase
tsc -b)vite build)dist/ folder with optimized assets๐ Deployment Phase
main branch only.github/workflows/deploy.yml
Install Vercel CLI:
npm i -g vercel
Build the project:
npm run build
Deploy to Vercel:
vercel --prod
Environment Variables: No additional environment variables required
Build the project:
npm run build
Drag and drop the dist folder to Netlify dashboard
Set build command: npm run build
Set publish directory: dist
src/
โโโ components/
โ โโโ Calculator.tsx # Main calculator component
โโโ lib/
โ โโโ evaluator.ts # Simple calculator engine with enum-based error handling
โโโ __tests__/
โ โโโ evaluator.test.ts # Unit tests for arithmetic logic
โโโ assets/ # Static assets
โโโ main.tsx # Application entry point
This project comes with a Docker environment that's fully compatible with GitHub Actions. Using Docker provides:
# Development server
docker-compose up app
# Unit tests
docker-compose run --rm test
# E2E tests
docker-compose run --rm e2e
# Production build
docker-compose run --rm build
This is a take-home assignment for Bayzat Frontend Test. For questions or clarifications, please contact the development team.
This project is created for Bayzat Frontend Test assignment purposes.
This Node.js project automatically generates and uploads a daily League of Legends champion lore video, complete with audio narration, splash art images, and animated subtitles. The video is posted to Instagram Reels and hosted via Catbox.moe, all orchestrated by GitHub Actions.
npm install
.env file in the root directory and add your secrets:ELEVENLABS_API_KEY=your_elevenlabs_api_key
IG_ACCESS_TOKEN=your_long_lived_instagram_access_token
IG_USER_ID=your_instagram_user_id
npm start
output/final_video.mp4 and uploaded to Catbox.moe/Instagram automatically..github/workflows/daily.yml runs the script daily, handles all secrets, and uploads the video.output/final_video.mp4 (vertical, optimized for Reels)temp/ and auto-cleanedpages_show_list, business_management, instagram_basic, instagram_content_publishUse the following cURL command (replace values with your own):
curl -X GET "https://graph.facebook.com/v19.0/oauth/access_token?grant_type=fb_exchange_token&client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&fb_exchange_token=YOUR_SHORT_LIVED_TOKEN"
YOUR_APP_ID: Your Facebook App IDYOUR_APP_SECRET: Your Facebook App SecretYOUR_SHORT_LIVED_TOKEN: The token you copied from the ExplorerThe response will include a new access_token valid for about 60 days. Use this as IG_ACCESS_TOKEN in your .env and GitHub Secrets.
Before the token expires, refresh it with:
curl -X GET "https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=YOUR_LONG_LIVED_TOKEN"
YOUR_LONG_LIVED_TOKEN with your current tokenNote: If you ever get an "invalid_token" or "expired" error, repeat the steps above to generate a new token.
Thank you for your interest in Buildog and your willingness to contribute!
You will need to install and configure the following dependencies on your machine to build Buildog:
This repo uses Turborepo.
To contribute code to Buildog, you must fork the Buildog repo.
git clone https://github.com/<github_username>/buildog.git
cd buildog
pnpm install # install dependencies
pnpm dev
| Directory | Description | Local development server |
|---|---|---|
/apps/buildog |
The main web application. | http://localhost:3000 |
/apps/api |
The main backend application. | http://localhost:3010 |
Auth0 - How to setup Auth0
The monorepo has a set of shared components under /packages:
/packages/ui: shadcn/ui components./packages/typescript-config: Shared Typescript settings/packages/eslint-config: Shared eslint settingsUse the pre-made script:
pnpm ui:add <shadcn/ui-component-name>
This works just like the add command in the
shadcn/uiCLI.
Installing a package with pnpm workspaces requires you to add the --filter flag to tell pnpm which workspace you want to install into. Do not install dependencies in their local folder, install them from the route using the --filter flag.
pnpm add <package> --filter <workspace>
pnpm uninstall <package> --filter <workspace>
For example:
pnpm add react --filter buildog installs into ./apps/buildogAfter making any changes, open a pull request. Once your PR has been merged, you will be proudly listed as a contributor.

Click to view live demo (https://tw-clone-liart.vercel.app/)
- typescript
- next-ssr
- next-auth
- firestore
- firebase cloud storage
- tailwind
- heroicons
- react-timeago
- react-twitter-embed
- react-hot-toast
- You can see all previous tweets, comments and likes.
- You can't tweet, comment or like without logging in.
- People who have closed browser tab or logged out appear offline.
- You can add images to your tweet.
- You can refresh tweets with the refresh button at top.
- You can delete your own tweets.
- responsive design
React clone project that includes most of Instagramโs features. (Register, Login, Forgot Password, Feed, Profile, Edit Profile, Direct Chat, Post, Follow, Unfollow, Like, Comment etc.)

Click to view live demo (jubstaa-igclone-myproject.netlify.app)
- react
- redux
- react-router
- tailwind
- firebase auth
- firestore
- firebase realtime database
- firebase cloud storage
- classnames
- axios
- formik
- yup
- emoji-picker-react
- react-drag-drop-file
- react-helmet
- react-hot-toast
- react-share
- react-icons
- react-timeago
- react-twitter-embed
- react-hot-toast
- uuid
- I worked on UI based on the Instagram design.
- According to the page you are on, the title is dynamically updated with react-helmet.
- Responsive Design
- You can login with your registered account.
- You can login with Facebook(Soon)
- You can sign up for app.
- You can use the forgot password option. You will receive a password change link in your email address.
- You can search registered users with search bar.
- Available buttons on the right. Home, Direct, Notifications, Add Post, Profile, Saved, Settings, Logout.
- Shows you and your followers posts by posting date.
- Your profile appears on sidebar, you can click and go to your profile.
- You can like, comment, send to your friend via direct message and save post.
- You can go to url of post by clicking on 3 dots, copy url and share post on your social media accounts.
- If the post belongs to you, you can delete or edit the post as an extra.
- You can translate the post title to your language by clicking on "See translation" text below the post.
- You can add emoji to your comment using the emoji box.
- You can select post you want to share from your computer or use drag and drop method.
- You can add title, location, alt text information to your post and share it.
- Follower, like and comment notifications are displayed in this section in time order.
- If notifications are not read, they are displayed with an extra marker.
- In this section, you can chat with user you want in realtime.
- Chats are sorted by date of most recent message.
- Unread chats appear in bold with a blue dot next to them. Number of unread chats is displayed on direct icon in header
- You can use emoji, send picture and heart in the message section.
- If a url is detected in message it will turn it into a clickable link.
- You can see likes, comments and follow notifications.
- Red dot appears when there are unread notifications.
- In this section you can see your profile information.
- You can see posts you have shared and posts you have saved.
- You can see users of followers and users you follow.
- In this section you can change or remove your profile photo.
- You can update your name, username, website, bio and email information.
- You can deactive your account temporarily.
- You can change your password.
I published the project of my MERN course adding new features. An application where you can share the places you like.
Click to view live demo (https://jubstaa-place-share.netlify.app/)
- react
- react-router-dom
- react-hot-toast
- axios
- expressjs
- mongoDB
- mongoose
- jsonwebtoken
- bcryptjs
- firebase storage bucket
- You can see the users in the app and the places they have shared.
- You can register.
- You can add a new place.
- You can delete and edit your places.
Modern, scalable QR Menu Management System built with a monorepo architecture and microfrontend approach.
๐ง Development Status: In Progress ๐ง
This project is currently under active development. Core features are implemented, but some advanced functionality is still being built.
This project follows a monorepo structure using Turborepo and pnpm workspaces, with microfrontend architecture for the tenant applications.
qr-menu/
โโโ apps/ # Application packages
โ โโโ backend/ # NestJS API server
โ โโโ landing/ # Marketing landing page
โ โโโ tenant/ # Customer-facing menu app (microfrontend)
โ โโโ tenant-dashboard/ # Restaurant management dashboard (microfrontend)
โโโ packages/ # Shared packages
โ โโโ shared-components/ # Reusable React components
โ โโโ shared-config/ # Configuration and environment variables
โ โโโ shared-styles/ # Global styles and design system
โ โโโ shared-types/ # TypeScript type definitions
โ โโโ shared-utils/ # Utility functions and API clients
โ โโโ shared-validation/ # Zod validation schemas
apps/backend)apps/landing)apps/tenant)apps/tenant-dashboard)@qr-menu/shared-types@qr-menu/shared-components@qr-menu/shared-config@qr-menu/shared-utils@qr-menu/shared-validation@qr-menu/shared-stylesClone the repository
git clone <repository-url>
cd qr-menu
Install dependencies
pnpm install
Set up environment variables
# Copy environment files
cp apps/backend/.env.example apps/backend/.env
cp apps/landing/.env.example apps/landing/.env
cp apps/tenant/.env.example apps/tenant/.env
cp apps/tenant-dashboard/.env.example apps/tenant-dashboard/.env
Configure Supabase
supabase/migrations/pnpm dev
# Backend (NestJS) only
pnpm --filter @qrmenu/backend dev
# Landing page only
pnpm --filter @qrmenu/landing dev
# Tenant app with microfrontend proxy
pnpm --filter tenant dev
# Tenant dashboard with microfrontend proxy
pnpm --filter tenant-dashboard dev
# Start microfrontend proxy
pnpm dev:proxy
# This will start both tenant apps with proper routing
pnpm build
pnpm --filter @qr-menu/shared-types build
pnpm --filter @qrmenu/backend build
pnpm dev - Start all applications in development modepnpm build - Build all packages and applicationspnpm test - Run tests across all packagespnpm lint - Lint all packagespnpm clean - Clean build artifactspnpm type-check - Type check all packagespnpm format - Format code with Prettierpnpm --filter <package-name> dev - Start specific packagepnpm --filter <package-name> build - Build specific packagepnpm --filter <package-name> lint - Lint specific packageThe tenant applications use Vercel's Microfrontends framework for seamless integration:
The system uses Supabase (PostgreSQL) with the following main entities:
pnpm build
Ensure all required environment variables are set:
SUPABASE_URLSUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYNODE_ENVWe welcome contributions! Here are some areas you can help with:
This project is licensed under the MIT License.
For support and questions:
๐ก Want to contribute? Check out our Contributing Guide and join our development community!
๐ Stay updated on our progress by watching this repository or joining our discussions.
Built with โค๏ธ using modern web technologies and best practices.