├── 04.chat-app ├── .npmrc ├── apps │ ├── chatapp │ │ ├── src │ │ │ ├── app │ │ │ │ ├── page.module.css │ │ │ │ ├── globals.css │ │ │ │ ├── favicon.ico │ │ │ │ ├── fonts │ │ │ │ │ ├── GeistVF.woff │ │ │ │ │ └── GeistMonoVF.woff │ │ │ │ ├── chat │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── layout.tsx │ │ │ │ └── layout.tsx │ │ │ ├── lib │ │ │ │ └── axios.ts │ │ │ ├── components │ │ │ │ └── footer.tsx │ │ │ └── hooks │ │ │ │ └── useUsername.ts │ │ ├── next.config.js │ │ ├── postcss.config.mjs │ │ ├── eslint.config.js │ │ ├── tsconfig.json │ │ ├── .gitignore │ │ └── package.json │ └── server │ │ ├── .env.example │ │ ├── eslint.config.mjs │ │ ├── tsconfig.json │ │ ├── src │ │ ├── middleware │ │ │ └── checkRoutes.ts │ │ ├── routes │ │ │ ├── auth.route.ts │ │ │ ├── search.route.ts │ │ │ └── chat.route.ts │ │ ├── utils │ │ │ └── cookieOptions.ts │ │ ├── index.ts │ │ ├── controller │ │ │ ├── dbConnect.ts │ │ │ └── startServer.ts │ │ └── statusCode │ │ │ └── response.ts │ │ ├── .gitignore │ │ └── package.json ├── packages │ ├── utils │ │ ├── src │ │ │ ├── index.ts │ │ │ └── encryption.ts │ │ ├── .env.example │ │ ├── eslint.config.mjs │ │ ├── tsconfig.json │ │ └── package.json │ ├── db │ │ ├── .gitignore │ │ ├── .env.example │ │ ├── prisma │ │ │ └── migrations │ │ │ │ └── migration_lock.toml │ │ ├── tsconfig.json │ │ ├── index.ts │ │ └── package.json │ ├── eslint-config │ │ ├── README.md │ │ ├── package.json │ │ └── base.js │ ├── types │ │ ├── eslint.config.mjs │ │ ├── tsconfig.json │ │ ├── package.json │ │ └── src │ │ │ └── clientTypes.ts │ └── typescript-config │ │ ├── react-library.json │ │ ├── package.json │ │ ├── nextjs.json │ │ └── base.json ├── .eslintignore ├── .lintstagedrc ├── public │ ├── chat.png │ ├── dm-chat.png │ ├── signin.png │ ├── signup-1.png │ ├── signup-2.png │ ├── join-room.png │ ├── room-chat.png │ ├── architecture.png │ ├── chat-app-demo.png │ ├── create-room.png │ └── search-user.png ├── .prettierignore ├── .prettierrc ├── .eslintrc.js ├── turbo.json ├── .gitignore └── package.json ├── 06.blog-web ├── .npmrc ├── apps │ ├── web │ │ ├── src │ │ │ ├── App.css │ │ │ ├── index.css │ │ │ ├── vite-env.d.ts │ │ │ ├── utils │ │ │ │ └── api.ts │ │ │ ├── main.tsx │ │ │ ├── components │ │ │ │ ├── Quote.tsx │ │ │ │ ├── Avatar.tsx │ │ │ │ └── LabelledInput.tsx │ │ │ ├── pages │ │ │ │ ├── Signin.tsx │ │ │ │ ├── Signup.tsx │ │ │ │ ├── Blogs.tsx │ │ │ │ └── Blog.tsx │ │ │ ├── App.tsx │ │ │ └── hooks │ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ ├── .gitignore │ │ ├── index.html │ │ ├── tsconfig.node.json │ │ ├── tsconfig.app.json │ │ ├── eslint.config.js │ │ └── package.json │ └── server │ │ ├── .env.example │ │ ├── eslint.config.mjs │ │ ├── tsconfig.json │ │ ├── src │ │ ├── middleware │ │ │ └── checkRoutes.ts │ │ ├── utils │ │ │ └── cookieOptions.ts │ │ ├── index.ts │ │ ├── routes │ │ │ ├── auth.route.ts │ │ │ ├── comment.route.ts │ │ │ └── blog.route.ts │ │ ├── controller │ │ │ ├── db.controller.ts │ │ │ └── start.controller.ts │ │ ├── statusCode │ │ │ └── response.ts │ │ └── app.ts │ │ ├── .gitignore │ │ └── package.json ├── .eslintignore ├── .lintstagedrc ├── public │ ├── blogs1.png │ ├── blogs2.png │ ├── blogs3.png │ ├── blogs4.png │ ├── signin.png │ ├── signup.png │ ├── read-blog.png │ ├── blog-create.png │ ├── blog-update.png │ └── blog-read-commnet.png ├── packages │ ├── eslint-config │ │ ├── README.md │ │ ├── package.json │ │ └── base.js │ ├── db │ │ ├── .gitignore │ │ ├── .env.example │ │ ├── prisma │ │ │ ├── migrations │ │ │ │ └── migration_lock.toml │ │ │ └── schema.prisma │ │ ├── tsconfig.json │ │ ├── index.ts │ │ └── package.json │ ├── types │ │ ├── eslint.config.mjs │ │ ├── src │ │ │ └── server │ │ │ │ ├── index.ts │ │ │ │ └── validators │ │ │ │ ├── comment.validator.ts │ │ │ │ ├── auth.validator.ts │ │ │ │ └── blog.validator.ts │ │ ├── tsconfig.json │ │ └── package.json │ └── typescript-config │ │ ├── react-library.json │ │ ├── package.json │ │ ├── nextjs.json │ │ └── base.json ├── .prettierignore ├── .prettierrc ├── .eslintrc.js ├── turbo.json ├── .gitignore └── package.json ├── 01.WeatherApp ├── src │ ├── App.css │ ├── vite-env.d.ts │ ├── index.css │ ├── App.tsx │ ├── main.tsx │ ├── types │ │ └── index.ts │ ├── UI │ │ ├── DotsLoading.tsx │ │ └── DotsLoading.css │ └── store │ │ └── index.ts ├── .env.example ├── public │ └── weather-demo.png ├── postcss.config.js ├── tsconfig.json ├── vite.config.ts ├── tailwind.config.js ├── .gitignore ├── index.html ├── README.md ├── tsconfig.node.json ├── tsconfig.app.json ├── eslint.config.js └── package.json ├── 02.Calculator ├── src │ ├── App.css │ ├── vite-env.d.ts │ ├── index.css │ ├── types │ │ └── index.ts │ ├── main.tsx │ ├── App.tsx │ └── components │ │ ├── Display.tsx │ │ ├── Button.tsx │ │ └── History.tsx ├── public │ └── calculator-demo.png ├── tsconfig.json ├── vite.config.ts ├── .gitignore ├── index.html ├── README.md ├── tsconfig.node.json ├── tsconfig.app.json ├── eslint.config.js └── package.json ├── 05.student-teacher-booking-appointment ├── .npmrc ├── apps │ ├── admin │ │ ├── src │ │ │ └── app │ │ │ │ ├── page.module.css │ │ │ │ ├── globals.css │ │ │ │ ├── favicon.ico │ │ │ │ ├── fonts │ │ │ │ ├── GeistVF.woff │ │ │ │ └── GeistMonoVF.woff │ │ │ │ ├── dashboard │ │ │ │ ├── teacher │ │ │ │ │ └── page.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── student │ │ │ │ │ ├── denied │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── approved │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── pending │ │ │ │ │ │ └── page.tsx │ │ │ │ └── layout.tsx │ │ │ │ ├── login │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ ├── next.config.js │ │ ├── postcss.config.mjs │ │ ├── eslint.config.js │ │ ├── tsconfig.json │ │ ├── .gitignore │ │ └── package.json │ ├── student │ │ ├── src │ │ │ └── app │ │ │ │ ├── page.module.css │ │ │ │ ├── globals.css │ │ │ │ ├── favicon.ico │ │ │ │ ├── fonts │ │ │ │ ├── GeistVF.woff │ │ │ │ └── GeistMonoVF.woff │ │ │ │ ├── dashboard │ │ │ │ ├── appointment │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── create │ │ │ │ │ │ └── page.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── layout.tsx │ │ │ │ ├── login │ │ │ │ └── page.tsx │ │ │ │ ├── register │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ ├── next.config.js │ │ ├── postcss.config.mjs │ │ ├── eslint.config.js │ │ ├── tsconfig.json │ │ ├── .gitignore │ │ └── package.json │ ├── teacher │ │ ├── src │ │ │ └── app │ │ │ │ ├── page.module.css │ │ │ │ ├── globals.css │ │ │ │ ├── favicon.ico │ │ │ │ ├── fonts │ │ │ │ ├── GeistVF.woff │ │ │ │ └── GeistMonoVF.woff │ │ │ │ ├── dashboard │ │ │ │ ├── page.tsx │ │ │ │ ├── appointment │ │ │ │ │ ├── approved │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── pending │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── cancelled │ │ │ │ │ │ └── page.tsx │ │ │ │ └── layout.tsx │ │ │ │ ├── login │ │ │ │ └── page.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── update │ │ │ │ └── password │ │ │ │ └── [teacherId] │ │ │ │ └── page.tsx │ │ ├── next.config.js │ │ ├── postcss.config.mjs │ │ ├── eslint.config.js │ │ ├── tsconfig.json │ │ ├── .gitignore │ │ └── package.json │ └── server │ │ ├── .env.example │ │ ├── eslint.config.mjs │ │ ├── tsconfig.json │ │ ├── src │ │ ├── middleware │ │ │ └── checkRoutes.ts │ │ ├── utils │ │ │ └── cookieOptions.ts │ │ ├── index.ts │ │ ├── controller │ │ │ ├── db.controller.ts │ │ │ └── start.controller.ts │ │ ├── routes │ │ │ ├── auth.route.ts │ │ │ ├── teacher.route.ts │ │ │ ├── student.route.ts │ │ │ └── admin.route.ts │ │ └── statusCode │ │ │ └── response.ts │ │ ├── .gitignore │ │ └── package.json ├── .eslintignore ├── packages │ ├── ui │ │ ├── src │ │ │ ├── styles │ │ │ │ └── global.css │ │ │ ├── Toast.tsx │ │ │ ├── buttons │ │ │ │ └── button.tsx │ │ │ ├── Footer.tsx │ │ │ ├── context │ │ │ │ └── UserContext.tsx │ │ │ └── Hero.tsx │ │ ├── postcss.config.mjs │ │ ├── eslint.config.mjs │ │ ├── tsconfig.json │ │ └── turbo │ │ │ └── generators │ │ │ ├── templates │ │ │ └── component.hbs │ │ │ └── config.ts │ ├── eslint-config │ │ ├── README.md │ │ ├── package.json │ │ └── base.js │ ├── db │ │ ├── .gitignore │ │ ├── .env.example │ │ ├── prisma │ │ │ └── migrations │ │ │ │ └── migration_lock.toml │ │ ├── tsconfig.json │ │ ├── index.ts │ │ └── package.json │ ├── types │ │ ├── src │ │ │ ├── client │ │ │ │ ├── index.ts │ │ │ │ ├── enum.ts │ │ │ │ ├── auth.validator.ts │ │ │ │ ├── Props.ts │ │ │ │ └── Types.ts │ │ │ └── server │ │ │ │ ├── index.ts │ │ │ │ └── validator │ │ │ │ ├── auth.validator.ts │ │ │ │ └── student.request.validator.ts │ │ ├── eslint.config.mjs │ │ ├── tsconfig.json │ │ └── package.json │ ├── utils │ │ ├── eslint.config.mjs │ │ ├── src │ │ │ └── api.ts │ │ ├── tsconfig.json │ │ └── package.json │ └── typescript-config │ │ ├── react-library.json │ │ ├── package.json │ │ ├── nextjs.json │ │ └── base.json ├── .lintstagedrc ├── .prettierignore ├── public │ ├── admin1.png │ ├── admin2.png │ ├── admin3.png │ ├── admin4.png │ ├── admin5.png │ ├── admin6.png │ ├── admin7.png │ ├── student1.png │ ├── student2.png │ ├── student3.png │ ├── student4.png │ ├── student5.png │ ├── student6.png │ ├── student7.png │ ├── teacher1.png │ ├── teacher2.png │ ├── teacher3.png │ ├── teacher4.png │ ├── teacher5.png │ ├── teacher6.png │ ├── teacher7.png │ └── architecture.png ├── .prettierrc ├── .eslintrc.js ├── turbo.json ├── .gitignore └── package.json ├── 03.tic-tac-toe ├── apps │ ├── tic-tac-toe │ │ ├── src │ │ │ ├── app │ │ │ │ ├── page.module.css │ │ │ │ ├── globals.css │ │ │ │ ├── favicon.ico │ │ │ │ ├── fonts │ │ │ │ │ ├── GeistVF.woff │ │ │ │ │ └── GeistMonoVF.woff │ │ │ │ ├── page.tsx │ │ │ │ └── room │ │ │ │ │ └── [id] │ │ │ │ │ └── page.tsx │ │ │ ├── utils │ │ │ │ ├── socket.ts │ │ │ │ └── gameLogic.ts │ │ │ ├── types │ │ │ │ └── index.ts │ │ │ └── components │ │ │ │ ├── Cell.tsx │ │ │ │ └── ResultDisplay.tsx │ │ ├── public │ │ │ ├── ui-1.png │ │ │ ├── ui-2.png │ │ │ ├── example-1.png │ │ │ └── example-2.png │ │ ├── next.config.js │ │ ├── postcss.config.mjs │ │ ├── eslint.config.js │ │ ├── tsconfig.json │ │ ├── .gitignore │ │ └── package.json │ └── server │ │ ├── .env.example │ │ ├── eslint.config.mjs │ │ ├── tsconfig.json │ │ ├── .gitignore │ │ └── package.json ├── .prettierignore ├── packages │ ├── eslint-config │ │ ├── README.md │ │ ├── package.json │ │ └── base.js │ └── typescript-config │ │ ├── react-library.json │ │ ├── package.json │ │ ├── nextjs.json │ │ └── base.json ├── .prettierrc ├── turbo.json ├── .gitignore └── package.json └── 07.portfolio ├── .eslintrc.json ├── src ├── app │ ├── globals.css │ ├── favicon.ico │ ├── page.tsx │ └── layout.tsx ├── types │ ├── spotlightType.ts │ ├── dockType.ts │ ├── projectType.ts │ └── skillType.ts ├── stores │ ├── bootWords.ts │ └── projectStore.ts ├── lib │ └── utils.ts ├── screens │ ├── Landing.tsx │ └── BootScreen.tsx └── components │ ├── elements │ ├── skill │ │ ├── Circle.tsx │ │ └── cards │ │ │ └── CardType2.tsx │ └── project │ │ └── Project.tsx │ └── ui │ ├── Dock.tsx │ └── Skills.tsx ├── public ├── snapshot.png ├── alfaarghyaAvtar.png ├── projects │ ├── blog-web.png │ ├── readhubmd.png │ ├── typing-test.png │ └── alfa-leetcode-api.png ├── svg │ ├── front-html.svg │ ├── front-css.svg │ ├── front-tailwind.svg │ ├── back-mongodb.svg │ └── back-express.svg └── dockSvg │ ├── terminal-dock.svg │ ├── email-circle-fill-svgrepo-com.svg │ ├── dock-menu.svg │ ├── linkedin-dock.svg │ ├── mail-5-svgrepo-com.svg │ └── cv-dock.svg ├── next.config.mjs ├── postcss.config.mjs ├── .gitignore ├── README.md ├── tsconfig.json └── package.json /04.chat-app/.npmrc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.blog-web/.npmrc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01.WeatherApp/src/App.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02.Calculator/src/App.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/App.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/app/page.module.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/.npmrc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/app/page.module.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/index.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/server/.env.example: -------------------------------------------------------------------------------- 1 | #server port 2 | PORT = -------------------------------------------------------------------------------- /01.WeatherApp/.env.example: -------------------------------------------------------------------------------- 1 | #openweathermap API key 2 | VITE_API_KEY= -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/app/globals.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; -------------------------------------------------------------------------------- /04.chat-app/packages/utils/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./encryption"; -------------------------------------------------------------------------------- /01.WeatherApp/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /02.Calculator/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/app/globals.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; -------------------------------------------------------------------------------- /04.chat-app/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | .next 4 | build 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/page.module.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.blog-web/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | .next 4 | build 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/page.module.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/page.module.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.chat-app/.lintstagedrc: -------------------------------------------------------------------------------- 1 | { 2 | "**/*.{ts,tsx,json}": ["prettier --write"] 3 | } -------------------------------------------------------------------------------- /06.blog-web/.lintstagedrc: -------------------------------------------------------------------------------- 1 | { 2 | "**/*.{ts,tsx,json}": ["prettier --write"] 3 | } -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /07.portfolio/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/globals.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/globals.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/globals.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; -------------------------------------------------------------------------------- /01.WeatherApp/src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | .next 4 | build 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/src/styles/global.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; -------------------------------------------------------------------------------- /02.Calculator/src/index.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; 2 | @custom-variant dark (&:where(.dark, .dark *)); -------------------------------------------------------------------------------- /04.chat-app/packages/utils/.env.example: -------------------------------------------------------------------------------- 1 | # secret key to encrypt or decrypt message 2 | SECRET_KEY = -------------------------------------------------------------------------------- /07.portfolio/src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/.lintstagedrc: -------------------------------------------------------------------------------- 1 | { 2 | "**/*.{ts,tsx,json}": ["prettier --write"] 3 | } -------------------------------------------------------------------------------- /04.chat-app/public/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/chat.png -------------------------------------------------------------------------------- /04.chat-app/packages/db/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | # Keep environment variables out of version control 3 | .env 4 | -------------------------------------------------------------------------------- /04.chat-app/public/dm-chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/dm-chat.png -------------------------------------------------------------------------------- /04.chat-app/public/signin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/signin.png -------------------------------------------------------------------------------- /04.chat-app/public/signup-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/signup-1.png -------------------------------------------------------------------------------- /04.chat-app/public/signup-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/signup-2.png -------------------------------------------------------------------------------- /06.blog-web/public/blogs1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blogs1.png -------------------------------------------------------------------------------- /06.blog-web/public/blogs2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blogs2.png -------------------------------------------------------------------------------- /06.blog-web/public/blogs3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blogs3.png -------------------------------------------------------------------------------- /06.blog-web/public/blogs4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blogs4.png -------------------------------------------------------------------------------- /06.blog-web/public/signin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/signin.png -------------------------------------------------------------------------------- /06.blog-web/public/signup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/signup.png -------------------------------------------------------------------------------- /04.chat-app/public/join-room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/join-room.png -------------------------------------------------------------------------------- /04.chat-app/public/room-chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/room-chat.png -------------------------------------------------------------------------------- /06.blog-web/public/read-blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/read-blog.png -------------------------------------------------------------------------------- /07.portfolio/public/snapshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/snapshot.png -------------------------------------------------------------------------------- /07.portfolio/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/src/app/favicon.ico -------------------------------------------------------------------------------- /04.chat-app/packages/eslint-config/README.md: -------------------------------------------------------------------------------- 1 | # `@turbo/eslint-config` 2 | 3 | Collection of internal eslint configurations. 4 | -------------------------------------------------------------------------------- /04.chat-app/public/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/architecture.png -------------------------------------------------------------------------------- /04.chat-app/public/chat-app-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/chat-app-demo.png -------------------------------------------------------------------------------- /04.chat-app/public/create-room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/create-room.png -------------------------------------------------------------------------------- /04.chat-app/public/search-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/search-user.png -------------------------------------------------------------------------------- /06.blog-web/packages/eslint-config/README.md: -------------------------------------------------------------------------------- 1 | # `@turbo/eslint-config` 2 | 3 | Collection of internal eslint configurations. 4 | -------------------------------------------------------------------------------- /06.blog-web/public/blog-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blog-create.png -------------------------------------------------------------------------------- /06.blog-web/public/blog-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blog-update.png -------------------------------------------------------------------------------- /07.portfolio/src/types/spotlightType.ts: -------------------------------------------------------------------------------- 1 | export type spotlightType = { 2 | className?: string; 3 | fill?: string; 4 | }; 5 | -------------------------------------------------------------------------------- /01.WeatherApp/public/weather-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/01.WeatherApp/public/weather-demo.png -------------------------------------------------------------------------------- /03.tic-tac-toe/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .dist 3 | build 4 | .next 5 | 6 | *.yml 7 | *.yaml 8 | 9 | *.env 10 | .env -------------------------------------------------------------------------------- /03.tic-tac-toe/packages/eslint-config/README.md: -------------------------------------------------------------------------------- 1 | # `@turbo/eslint-config` 2 | 3 | Collection of internal eslint configurations. 4 | -------------------------------------------------------------------------------- /04.chat-app/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .dist 3 | build 4 | .next 5 | 6 | *.yml 7 | *.yaml 8 | 9 | *.env 10 | .env -------------------------------------------------------------------------------- /04.chat-app/apps/server/.env.example: -------------------------------------------------------------------------------- 1 | #server port 2 | PORT = 3 | 4 | # JWT Secret for authenticate 5 | JWT_SECRET = "mySecretJWT" -------------------------------------------------------------------------------- /06.blog-web/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .dist 3 | build 4 | .next 5 | 6 | *.yml 7 | *.yaml 8 | 9 | *.env 10 | .env -------------------------------------------------------------------------------- /01.WeatherApp/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /02.Calculator/public/calculator-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/02.Calculator/public/calculator-demo.png -------------------------------------------------------------------------------- /06.blog-web/apps/server/.env.example: -------------------------------------------------------------------------------- 1 | #server port 2 | PORT = 8080 3 | 4 | # JWT Secret for authenticate 5 | JWT_SECRET = "mySecretJWT" -------------------------------------------------------------------------------- /06.blog-web/packages/db/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | # Keep environment variables out of version control 3 | .env 4 | 5 | /prisma/generated -------------------------------------------------------------------------------- /06.blog-web/public/blog-read-commnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blog-read-commnet.png -------------------------------------------------------------------------------- /07.portfolio/next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /07.portfolio/public/alfaarghyaAvtar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/alfaarghyaAvtar.png -------------------------------------------------------------------------------- /07.portfolio/public/projects/blog-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/projects/blog-web.png -------------------------------------------------------------------------------- /07.portfolio/public/projects/readhubmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/projects/readhubmd.png -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/apps/chatapp/src/app/favicon.ico -------------------------------------------------------------------------------- /07.portfolio/public/projects/typing-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/projects/typing-test.png -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/public/ui-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/public/ui-1.png -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/public/ui-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/public/ui-2.png -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/src/app/favicon.ico -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | export default config; -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/apps/chatapp/src/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .dist 3 | build 4 | .next 5 | 6 | *.yml 7 | *.yaml 8 | 9 | *.env 10 | .env -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/eslint-config/README.md: -------------------------------------------------------------------------------- 1 | # `@turbo/eslint-config` 2 | 3 | Collection of internal eslint configurations. 4 | -------------------------------------------------------------------------------- /07.portfolio/public/projects/alfa-leetcode-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/projects/alfa-leetcode-api.png -------------------------------------------------------------------------------- /07.portfolio/src/types/dockType.ts: -------------------------------------------------------------------------------- 1 | export type dockType = { 2 | title: string; 3 | icon: string; 4 | href: string; 5 | newTab: boolean; 6 | }; 7 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | export default config; -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/public/example-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/public/example-1.png -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/public/example-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/public/example-2.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/.env.example: -------------------------------------------------------------------------------- 1 | #server port 2 | PORT = 8080 3 | 4 | # JWT Secret for authenticate 5 | JWT_SECRET = "mySecretJWT" -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/apps/chatapp/src/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/db/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | # Keep environment variables out of version control 3 | .env 4 | 5 | /prisma/generated -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/admin1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin1.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/admin2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin2.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/admin3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin3.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/admin4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin4.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/admin5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin5.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/admin6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin6.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/admin7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin7.png -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/src/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /04.chat-app/packages/db/.env.example: -------------------------------------------------------------------------------- 1 | #docker-postgres connection string 2 | DATABASE_URL="postgresql://postgres:chatappadminpassword@localhost:5432/chatAppDB?schema=public" -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/student1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student1.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/student2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student2.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/student3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student3.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/student4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student4.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/student5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student5.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/student6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student6.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/student7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student7.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/teacher1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher1.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/teacher2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher2.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/teacher3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher3.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/teacher4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher4.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/teacher5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher5.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/teacher6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher6.png -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/teacher7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher7.png -------------------------------------------------------------------------------- /06.blog-web/packages/db/.env.example: -------------------------------------------------------------------------------- 1 | #docker-postgres connection string 2 | DATABASE_URL="postgresql://postgres:blogwebadminpassword@localhost:5432/blogwebDB?schema=public" -------------------------------------------------------------------------------- /01.WeatherApp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /02.Calculator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/server/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@oms/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/src/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /04.chat-app/apps/server/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@chatApp/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | export default config; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | export default config; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | export default config; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | export default config; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/public/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/architecture.png -------------------------------------------------------------------------------- /06.blog-web/apps/server/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@blog-web/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /04.chat-app/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": false, 3 | "printWidth": 120, 4 | "bracketSpacing": true, 5 | "tabWidth": 2, 6 | "trailingComma": "es5", 7 | "semi": true 8 | } 9 | -------------------------------------------------------------------------------- /04.chat-app/packages/types/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@chatApp/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /04.chat-app/packages/utils/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@chatApp/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /06.blog-web/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": false, 3 | "printWidth": 120, 4 | "bracketSpacing": true, 5 | "tabWidth": 2, 6 | "trailingComma": "es5", 7 | "semi": true 8 | } 9 | -------------------------------------------------------------------------------- /06.blog-web/packages/types/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@blog-web/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /03.tic-tac-toe/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": false, 3 | "printWidth": 120, 4 | "bracketSpacing": true, 5 | "tabWidth": 2, 6 | "trailingComma": "es5", 7 | "semi": true 8 | } 9 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/utils/socket.ts: -------------------------------------------------------------------------------- 1 | import { io } from "socket.io-client"; 2 | export const socket = io("http://localhost:3001"); // Ensure your Socket.IO server is running 3 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/src/client/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Props"; 2 | export * from "./enum"; 3 | export * from "./Types"; 4 | export * from "./auth.validator"; -------------------------------------------------------------------------------- /06.blog-web/packages/types/src/server/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./validators/auth.validator"; 2 | export * from "./validators/blog.validator"; 3 | export * from "./validators/comment.validator"; -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/eslint.config.js: -------------------------------------------------------------------------------- 1 | import { nextJsConfig } from "@chatApp/eslint-config/next-js"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default nextJsConfig; 5 | -------------------------------------------------------------------------------- /04.chat-app/packages/db/prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (e.g., Git) 3 | provider = "postgresql" -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/admin/src/app/favicon.ico -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/student/src/app/favicon.ico -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/teacher/src/app/favicon.ico -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/db/.env.example: -------------------------------------------------------------------------------- 1 | #docker-postgres connection string 2 | DATABASE_URL="postgresql://postgres:stbaadminpassword@localhost:5432/chatAppDB?schema=public" -------------------------------------------------------------------------------- /07.portfolio/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /06.blog-web/packages/db/prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (e.g., Git) 3 | provider = "postgresql" 4 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/eslint.config.js: -------------------------------------------------------------------------------- 1 | import { nextJsConfig } from "@tic-tac-toe/eslint-config/next-js"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default nextJsConfig; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/admin/src/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@stba/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@stba/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/utils/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@stba/eslint-config/base"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/utils/api.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | export const api = axios.create({ 4 | baseURL: 'http://localhost:8080/api', 5 | withCredentials: true, 6 | }); 7 | 8 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/student/src/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/teacher/src/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /07.portfolio/src/stores/bootWords.ts: -------------------------------------------------------------------------------- 1 | export const bootWords = [ 2 | "Hello", 3 | "こんにちは", 4 | "Bonjour", 5 | "안녕하세요", 6 | "Hallo", 7 | "नमस्ते", 8 | "Ciao", 9 | "নমস্কার", 10 | ]; 11 | -------------------------------------------------------------------------------- /01.WeatherApp/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/lib/axios.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | const api = axios.create({ 4 | baseURL: 'http://localhost:8080/api', 5 | withCredentials: true, 6 | }); 7 | 8 | export default api; 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": false, 3 | "printWidth": 120, 4 | "bracketSpacing": true, 5 | "tabWidth": 2, 6 | "trailingComma": "es5", 7 | "semi": true 8 | } 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/eslint.config.js: -------------------------------------------------------------------------------- 1 | import { nextJsConfig } from "@stba/eslint-config/next-js"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default nextJsConfig; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/admin/src/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { config } from "@stba/eslint-config/react-internal"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default config; 5 | -------------------------------------------------------------------------------- /07.portfolio/src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { ClassValue, clsx } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import RoomForm from "../components/RoomForm"; 2 | 3 | const Home = () => { 4 | return ( 5 | 6 | ); 7 | } 8 | 9 | export default Home; 10 | -------------------------------------------------------------------------------- /04.chat-app/packages/typescript-config/react-library.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | "jsx": "react-jsx" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/eslint.config.js: -------------------------------------------------------------------------------- 1 | import { nextJsConfig } from "@stba/eslint-config/next-js"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default nextJsConfig; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/student/src/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/eslint.config.js: -------------------------------------------------------------------------------- 1 | import { nextJsConfig } from "@stba/eslint-config/next-js"; 2 | 3 | /** @type {import("eslint").Linter.Config} */ 4 | export default nextJsConfig; 5 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/teacher/src/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/src/Toast.tsx: -------------------------------------------------------------------------------- 1 | import { Toaster } from "sonner"; 2 | 3 | const Toast = () => { 4 | return 5 | } 6 | 7 | export default Toast -------------------------------------------------------------------------------- /06.blog-web/packages/typescript-config/react-library.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | "jsx": "react-jsx" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /03.tic-tac-toe/packages/typescript-config/react-library.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | "jsx": "react-jsx" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/db/prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (e.g., Git) 3 | provider = "postgresql" 4 | -------------------------------------------------------------------------------- /01.WeatherApp/src/App.tsx: -------------------------------------------------------------------------------- 1 | import "./App.css"; 2 | import Weather from "./UI/weather"; 3 | 4 | function App() { 5 | return ( 6 | <> 7 | 8 | 9 | ); 10 | } 11 | 12 | export default App; 13 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@chatApp/typescript-config/base.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /06.blog-web/apps/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@blog-web/typescript-config/base.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /06.blog-web/packages/typescript-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@blog-web/typescript-config", 3 | "version": "0.0.0", 4 | "private": true, 5 | "license": "MIT", 6 | "publishConfig": { 7 | "access": "public" 8 | } 9 | } -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tic-tac-toe/typescript-config/base.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/utils/src/api.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | const api = axios.create({ 4 | baseURL: 'http://localhost:8080/api', 5 | withCredentials: true, 6 | }); 7 | 8 | export default api; 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/typescript-config/react-library.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | "jsx": "react-jsx" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /04.chat-app/packages/typescript-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chatApp/typescript-config", 3 | "version": "0.0.0", 4 | "private": true, 5 | "license": "MIT", 6 | "publishConfig": { 7 | "access": "public" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /03.tic-tac-toe/packages/typescript-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@tic-tac-toe/typescript-config", 3 | "version": "0.0.0", 4 | "private": true, 5 | "license": "MIT", 6 | "publishConfig": { 7 | "access": "public" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /04.chat-app/packages/types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@chatApp/typescript-config/react-library.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } -------------------------------------------------------------------------------- /04.chat-app/packages/utils/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@chatApp/typescript-config/react-library.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } -------------------------------------------------------------------------------- /06.blog-web/packages/types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@blog-web/typescript-config/react-library.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } -------------------------------------------------------------------------------- /04.chat-app/packages/db/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@chatApp/typescript-config/react-library.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@stba/typescript-config/base.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/typescript-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@stba/typescript-config", 3 | "version": "0.0.0", 4 | "private": true, 5 | "license": "MIT", 6 | "publishConfig": { 7 | "access": "public" 8 | } 9 | } -------------------------------------------------------------------------------- /06.blog-web/packages/db/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@blog-web/typescript-config/react-library.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@stba/typescript-config/react-library.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/teacher/page.tsx: -------------------------------------------------------------------------------- 1 | import AdminTeacherPage from "@stba/ui/Pages/AdminTeacherPage"; 2 | 3 | const Page = () => { 4 | return <> 5 | 6 | 7 | }; 8 | 9 | export default Page; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/utils/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@stba/typescript-config/base.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } -------------------------------------------------------------------------------- /01.WeatherApp/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: [ 4 | "./index.html", 5 | "./src/**/*.{js,ts,jsx,tsx}", 6 | ], 7 | theme: { 8 | extend: {}, 9 | }, 10 | plugins: [], 11 | } 12 | 13 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@stba/typescript-config/react-library.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } -------------------------------------------------------------------------------- /02.Calculator/src/types/index.ts: -------------------------------------------------------------------------------- 1 | export interface DisplayProps { 2 | value: string; 3 | } 4 | 5 | export interface ButtonProps { 6 | value: string; 7 | onClick: (value: string) => void; 8 | } 9 | 10 | export interface HistoryProps { 11 | history: string[]; 12 | } 13 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/dashboard/appointment/page.tsx: -------------------------------------------------------------------------------- 1 | import StudentAppointments from "@stba/ui/Pages/StudentAppointmentsPage"; 2 | 3 | const Page = () => { 4 | return <> 5 | 6 | 7 | }; 8 | 9 | export default Page -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/db/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@stba/typescript-config/react-library.json", 3 | "compilerOptions": { 4 | "outDir": "dist" 5 | }, 6 | "include": ["src"], 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | import tailwindcss from '@tailwindcss/vite' 4 | 5 | // https://vite.dev/config/ 6 | export default defineConfig({ 7 | plugins: [react(), tailwindcss(),], 8 | }) 9 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/src/server/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./validator/auth.validator"; 2 | export * from "./validator/admin.request.validator"; 3 | export * from "./validator/student.request.validator"; 4 | export * from "./validator/teacher.request.validator"; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/page.tsx: -------------------------------------------------------------------------------- 1 | const Page = () => { 2 | return <> 3 |
4 |

Select the Dashboard👋

5 |
6 | 7 | }; 8 | 9 | export default Page; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/dashboard/appointment/create/page.tsx: -------------------------------------------------------------------------------- 1 | import CreateAppointmentPage from "@stba/ui/Pages/CreateAppointmentPage"; 2 | 3 | const Page = () => { 4 | return <> 5 | 6 | 7 | }; 8 | 9 | export default Page -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/dashboard/page.tsx: -------------------------------------------------------------------------------- 1 | const Page = () => { 2 | return <> 3 |
4 |

Select the Dashboard👋

5 |
6 | 7 | }; 8 | 9 | export default Page; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/page.tsx: -------------------------------------------------------------------------------- 1 | const Page = () => { 2 | return <> 3 |
4 |

Select the Dashboard👋

5 |
6 | 7 | }; 8 | 9 | export default Page; -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/app/chat/page.tsx: -------------------------------------------------------------------------------- 1 | const ChatHome = () => { 2 | return ( 3 |
4 |

Select a room or start a conversation 👋

5 |
6 | ); 7 | }; 8 | 9 | export default ChatHome; 10 | -------------------------------------------------------------------------------- /02.Calculator/src/main.tsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from 'react' 2 | import { createRoot } from 'react-dom/client' 3 | import './index.css' 4 | import App from './App.tsx' 5 | 6 | createRoot(document.getElementById('root')!).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /01.WeatherApp/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App.tsx' 4 | import './index.css' 5 | 6 | ReactDOM.createRoot(document.getElementById('root')!).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/login/page.tsx: -------------------------------------------------------------------------------- 1 | import { Role } from "@stba/types/client"; 2 | import LoginPage from "@stba/ui/Pages/Login"; 3 | 4 | const Login = () => { 5 | return <> 6 | 7 | 8 | }; 9 | 10 | export default Login; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/login/page.tsx: -------------------------------------------------------------------------------- 1 | import { Role } from "@stba/types/client"; 2 | import LoginPage from "@stba/ui/Pages/Login"; 3 | 4 | const Login = () => { 5 | return <> 6 | 7 | 8 | }; 9 | 10 | export default Login; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/login/page.tsx: -------------------------------------------------------------------------------- 1 | import { Role } from "@stba/types/client"; 2 | import LoginPage from "@stba/ui/Pages/Login"; 3 | 4 | const Login = () => { 5 | return <> 6 | 7 | 8 | }; 9 | 10 | export default Login; -------------------------------------------------------------------------------- /02.Calculator/src/App.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Calculator from "./components/Calculator"; 3 | 4 | const App: React.FC = () => ( 5 |
6 | 7 |
8 | ); 9 | 10 | export default App; 11 | -------------------------------------------------------------------------------- /02.Calculator/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | import tailwindcss from '@tailwindcss/vite' 4 | 5 | // https://vite.dev/config/ 6 | export default defineConfig({ 7 | plugins: [ 8 | react(), 9 | tailwindcss(), 10 | ], 11 | }) 12 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/turbo/generators/templates/component.hbs: -------------------------------------------------------------------------------- 1 | export const {{ pascalCase name }} = ({ children }: { children: React.ReactNode }) => { 2 | return ( 3 |
4 |

{{ pascalCase name }} Component

5 | {children} 6 |
7 | ); 8 | }; 9 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/middleware/checkRoutes.ts: -------------------------------------------------------------------------------- 1 | import { NextFunction, Request, Response } from "express"; 2 | 3 | //check the route on server 4 | const checkRoutes = (req: Request, res: Response, next: NextFunction) => { 5 | console.log(`${req.method}${req.url}`); 6 | next(); 7 | } 8 | 9 | export default checkRoutes; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/register/page.tsx: -------------------------------------------------------------------------------- 1 | import { Role } from "@stba/types/client"; 2 | import RegisterPage from "@stba/ui/Pages/Register" 3 | 4 | const Register = () => { 5 | return <> 6 | 7 | 8 | }; 9 | 10 | export default Register -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/middleware/checkRoutes.ts: -------------------------------------------------------------------------------- 1 | import { NextFunction, Request, Response } from "express"; 2 | 3 | //check the route on server 4 | const checkRoutes = (req: Request, res: Response, next: NextFunction) => { 5 | console.log(`${req.method}${req.url}`); 6 | next(); 7 | } 8 | 9 | export default checkRoutes; -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App.tsx' 4 | import './index.css' 5 | 6 | ReactDOM.createRoot(document.getElementById('root')!).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/routes/auth.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import { logout, signin, signup } from "../controller/authController"; 3 | 4 | const router = Router(); 5 | 6 | router.post("/signup", signup); 7 | router.post("/signin", signin); 8 | router.post("/logout", logout); 9 | 10 | export default router; 11 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/middleware/checkRoutes.ts: -------------------------------------------------------------------------------- 1 | import { NextFunction, Request, Response } from "express"; 2 | 3 | //check the route on server 4 | const checkRoutes = (req: Request, res: Response, next: NextFunction) => { 5 | console.log(`${req.method}${req.url}`); 6 | next(); 7 | } 8 | 9 | export default checkRoutes; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import Footer from "@stba/ui/Footer"; 2 | import Hero from "@stba/ui/Hero"; 3 | 4 | const Home = () => { 5 | return ( 6 |
7 | 8 |
9 |
10 | ); 11 | } 12 | 13 | export default Home; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/student/denied/page.tsx: -------------------------------------------------------------------------------- 1 | import { Status } from "@stba/types/client"; 2 | import StudentStatusPage from "@stba/ui/Pages/StudentStatusPage"; 3 | 4 | 5 | const Page = () => { 6 | return <> 7 | 8 | 9 | }; 10 | 11 | export default Page; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import Footer from "@stba/ui/Footer"; 2 | import Hero from "@stba/ui/Hero"; 3 | 4 | const Home = () => { 5 | return ( 6 |
7 | 8 |
9 |
10 | ); 11 | } 12 | 13 | export default Home; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import Footer from "@stba/ui/Footer"; 2 | import Hero from "@stba/ui/Hero"; 3 | 4 | const Home = () => { 5 | return ( 6 |
7 | 8 |
9 |
10 | ); 11 | } 12 | 13 | export default Home; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/student/approved/page.tsx: -------------------------------------------------------------------------------- 1 | import { Status } from "@stba/types/client"; 2 | import StudentStatusPage from "@stba/ui/Pages/StudentStatusPage"; 3 | 4 | 5 | const Page = () => { 6 | return <> 7 | 8 | 9 | }; 10 | 11 | export default Page; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/student/pending/page.tsx: -------------------------------------------------------------------------------- 1 | import { Status } from "@stba/types/client"; 2 | import StudentStatusPage from "@stba/ui/Pages/StudentStatusPage"; 3 | 4 | 5 | const Page = () => { 6 | return <> 7 | 8 | 9 | }; 10 | 11 | export default Page; -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/components/Quote.tsx: -------------------------------------------------------------------------------- 1 | export const Quote = () => { 2 | return ( 3 |
4 |
5 |
"Quote"
6 |
7 |
8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /07.portfolio/src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import BootScreen from "@/screens/BootScreen"; 2 | import Landing from "@/screens/Landing"; 3 | import React from "react"; 4 | 5 | const Home = () => { 6 | return ( 7 | <> 8 | 9 |
10 | 11 |
12 | 13 | ); 14 | }; 15 | 16 | export default Home; 17 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/routes/search.route.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | import { searchUser } from "../controller/searchController"; 3 | import authenticate from "../middleware/authenticate"; 4 | 5 | const router = express.Router(); 6 | 7 | //search for the user 8 | router.get("/user", authenticate, searchUser); 9 | 10 | export default router; 11 | -------------------------------------------------------------------------------- /04.chat-app/packages/typescript-config/nextjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | "plugins": [{ "name": "next" }], 6 | "module": "ESNext", 7 | "moduleResolution": "Bundler", 8 | "allowJs": true, 9 | "jsx": "preserve", 10 | "noEmit": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/update/password/[teacherId]/page.tsx: -------------------------------------------------------------------------------- 1 | import { Role } from "@stba/types/client"; 2 | import UpdatePasswordPage from "@stba/ui/Pages/UpdatePassword"; 3 | 4 | const UpdatePassword = () => { 5 | return <> 6 | 7 | 8 | }; 9 | 10 | export default UpdatePassword; -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/utils/cookieOptions.ts: -------------------------------------------------------------------------------- 1 | import { CookieOptions } from "express"; 2 | 3 | export const COOKIE_OPTIONS: CookieOptions = { 4 | httpOnly: true, 5 | // eslint-disable-next-line turbo/no-undeclared-env-vars 6 | secure: process.env.NODE_ENV === "production", 7 | sameSite: "strict", 8 | maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days 9 | }; 10 | -------------------------------------------------------------------------------- /06.blog-web/packages/typescript-config/nextjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | "plugins": [{ "name": "next" }], 6 | "module": "ESNext", 7 | "moduleResolution": "Bundler", 8 | "allowJs": true, 9 | "jsx": "preserve", 10 | "noEmit": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/types/index.ts: -------------------------------------------------------------------------------- 1 | export interface BoardProps { 2 | roomId: string; 3 | playerName: string; 4 | } 5 | 6 | export interface CellProps { 7 | value: string; 8 | onClick: () => void; 9 | } 10 | 11 | export interface ResultProps { 12 | result: string | null; 13 | players: Record; 14 | currentTurn: string 15 | } 16 | -------------------------------------------------------------------------------- /03.tic-tac-toe/packages/typescript-config/nextjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | "plugins": [{ "name": "next" }], 6 | "module": "ESNext", 7 | "moduleResolution": "Bundler", 8 | "allowJs": true, 9 | "jsx": "preserve", 10 | "noEmit": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /02.Calculator/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /01.WeatherApp/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | .env -------------------------------------------------------------------------------- /04.chat-app/packages/utils/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chatApp/utils", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "exports": { 7 | ".": "./src/index.ts" 8 | }, 9 | "devDependencies": { 10 | "@chatApp/eslint-config": "*", 11 | "@chatApp/typescript-config": "*", 12 | "@types/react": "19.0.8", 13 | "typescript": "5.7.3" 14 | } 15 | } -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/appointment/approved/page.tsx: -------------------------------------------------------------------------------- 1 | import { AppointmentStatus } from "@stba/types/client"; 2 | import TeacherAppointmentPage from "@stba/ui/Pages/TeacherAppointmentPage"; 3 | 4 | const Page = () => { 5 | return <> 6 | 7 | 8 | }; 9 | 10 | export default Page; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/appointment/pending/page.tsx: -------------------------------------------------------------------------------- 1 | import { AppointmentStatus } from "@stba/types/client"; 2 | import TeacherAppointmentPage from "@stba/ui/Pages/TeacherAppointmentPage"; 3 | 4 | const Page = () => { 5 | return <> 6 | 7 | 8 | }; 9 | 10 | export default Page; -------------------------------------------------------------------------------- /06.blog-web/apps/web/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/utils/cookieOptions.ts: -------------------------------------------------------------------------------- 1 | import { CookieOptions } from "express"; 2 | 3 | export const COOKIE_OPTIONS: CookieOptions = { 4 | httpOnly: true, 5 | // eslint-disable-next-line turbo/no-undeclared-env-vars 6 | secure: process.env.NODE_ENV === "production", 7 | sameSite: "strict", 8 | maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days 9 | }; 10 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/appointment/cancelled/page.tsx: -------------------------------------------------------------------------------- 1 | import { AppointmentStatus } from "@stba/types/client"; 2 | import TeacherAppointmentPage from "@stba/ui/Pages/TeacherAppointmentPage"; 3 | 4 | const Page = () => { 5 | return <> 6 | 7 | 8 | }; 9 | 10 | export default Page; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/typescript-config/nextjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | "plugins": [{ "name": "next" }], 6 | "module": "ESNext", 7 | "moduleResolution": "Bundler", 8 | "allowJs": true, 9 | "jsx": "preserve", 10 | "noEmit": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/index.ts: -------------------------------------------------------------------------------- 1 | import app from "./app"; 2 | import * as dotenv from "dotenv"; 3 | import startServer from "./controller/start.controller"; 4 | 5 | dotenv.config(); 6 | 7 | // eslint-disable-next-line turbo/no-undeclared-env-vars 8 | const port = process.env.PORT || 8080; // Server port 9 | 10 | // Start the server 11 | app.listen(port, async () => startServer(Number(port))); 12 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/components/Avatar.tsx: -------------------------------------------------------------------------------- 1 | const Avatar = ({ username }: { username: string }) => { 2 | return ( 3 |
4 | {username[0]} 5 |
6 | ); 7 | }; 8 | 9 | export default Avatar; 10 | -------------------------------------------------------------------------------- /01.WeatherApp/src/types/index.ts: -------------------------------------------------------------------------------- 1 | export interface WeatherData { 2 | name: string; 3 | main: { 4 | temp: number; 5 | feels_like: number; 6 | humidity: number; 7 | }; 8 | weather: { 9 | description: string; 10 | main: string; 11 | }[]; 12 | wind: { 13 | speed: number; 14 | }; 15 | sys: { 16 | sunrise: number; 17 | sunset: number; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/utils/cookieOptions.ts: -------------------------------------------------------------------------------- 1 | import { CookieOptions } from "express"; 2 | 3 | export const COOKIE_OPTIONS: CookieOptions = { 4 | httpOnly: true, 5 | // eslint-disable-next-line turbo/no-undeclared-env-vars 6 | secure: process.env.NODE_ENV === "production", 7 | sameSite: "strict", // ✅ TypeScript now understands it's a valid value 8 | maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days 9 | }; 10 | -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/routes/auth.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import { logout, signin, signup } from "../controller/auth.controller"; 3 | 4 | const router = Router(); 5 | 6 | //create a user account 7 | router.post("/signup", signup); 8 | 9 | //login to a user account 10 | router.post("/signin", signin); 11 | 12 | //user log out 13 | router.post("/logout", logout); 14 | 15 | export default router; -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/index.ts: -------------------------------------------------------------------------------- 1 | import { server } from "./app"; 2 | import * as dotenv from "dotenv"; 3 | import startServer from "./controller/startServer"; 4 | 5 | dotenv.config(); 6 | 7 | // eslint-disable-next-line turbo/no-undeclared-env-vars 8 | const port = process.env.PORT || 8080; // Server port 9 | 10 | // Start the server (Express & WebSocket) 11 | server.listen(port, async () => startServer(Number(port))); 12 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/src/buttons/button.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | export const Button = ({ appName, className }: { appName: string, className?: string }) => { 4 | return ( 5 | 11 | ); 12 | }; -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@chatApp/typescript-config/nextjs.json", 3 | "compilerOptions": { 4 | "plugins": [ 5 | { 6 | "name": "next" 7 | } 8 | ] 9 | }, 10 | "include": [ 11 | "**/*.ts", 12 | "**/*.tsx", 13 | "next-env.d.ts", 14 | "next.config.js", 15 | ".next/types/**/*.ts" 16 | ], 17 | "exclude": [ 18 | "node_modules" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /01.WeatherApp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Weather App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /02.Calculator/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Calculator 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /02.Calculator/src/components/Display.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { DisplayProps } from "../types"; 3 | 4 | const Display: React.FC = ({ value }) => ( 5 |
7 | {value} 8 |
9 | ); 10 | 11 | export default Display; 12 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/controller/dbConnect.ts: -------------------------------------------------------------------------------- 1 | import prisma from "@chatApp/db/prisma"; 2 | 3 | const dbConnect = async () => { 4 | try { 5 | await prisma.$connect(); 6 | console.log("✅ Database connected successfully!"); 7 | } catch (err) { 8 | console.error("❌ Error connecting to the database:", err); 9 | process.exit(1); // Exit if DB connection fails 10 | } 11 | }; 12 | 13 | export default dbConnect; 14 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tic-tac-toe/typescript-config/nextjs.json", 3 | "compilerOptions": { 4 | "plugins": [ 5 | { 6 | "name": "next" 7 | } 8 | ] 9 | }, 10 | "include": [ 11 | "**/*.ts", 12 | "**/*.tsx", 13 | "next-env.d.ts", 14 | "next.config.js", 15 | ".next/types/**/*.ts" 16 | ], 17 | "exclude": [ 18 | "node_modules" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/app/chat/layout.tsx: -------------------------------------------------------------------------------- 1 | import { ReactNode } from "react"; 2 | import Sidebar from "../../components/sidebar"; 3 | 4 | export default function ChatLayout({ children }: { children: ReactNode }) { 5 | return ( 6 |
7 | 8 |
9 | {children} 10 |
11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/controller/db.controller.ts: -------------------------------------------------------------------------------- 1 | import prisma from "@blog-web/db/prisma"; 2 | 3 | const dbConnect = async () => { 4 | try { 5 | await prisma.$connect(); 6 | console.log("✅ Database connected successfully!"); 7 | } catch (err) { 8 | console.error("❌ Error connecting to the database:", err); 9 | process.exit(1); // Exit if DB connection fails 10 | } 11 | }; 12 | 13 | export default dbConnect; 14 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Blog Web 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@stba/typescript-config/nextjs.json", 3 | "compilerOptions": { 4 | "plugins": [ 5 | { 6 | "name": "next" 7 | } 8 | ] 9 | }, 10 | "include": [ 11 | "**/*.ts", 12 | "**/*.tsx", 13 | "next-env.d.ts", 14 | "next.config.js", 15 | ".next/types/**/*.ts" 16 | ], 17 | "exclude": [ 18 | "node_modules" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/index.ts: -------------------------------------------------------------------------------- 1 | import app from "./app"; 2 | import * as dotenv from "dotenv"; 3 | import startServer from "./controller/start.controller"; 4 | 5 | dotenv.config(); 6 | 7 | // eslint-disable-next-line turbo/no-undeclared-env-vars 8 | const port = process.env.PORT || 8080; // Server port 9 | 10 | // Start the server (Express & WebSocket) 11 | app.listen(port, async () => startServer(Number(port))); 12 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@stba/typescript-config/nextjs.json", 3 | "compilerOptions": { 4 | "plugins": [ 5 | { 6 | "name": "next" 7 | } 8 | ] 9 | }, 10 | "include": [ 11 | "**/*.ts", 12 | "**/*.tsx", 13 | "next-env.d.ts", 14 | "next.config.js", 15 | ".next/types/**/*.ts" 16 | ], 17 | "exclude": [ 18 | "node_modules" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@stba/typescript-config/nextjs.json", 3 | "compilerOptions": { 4 | "plugins": [ 5 | { 6 | "name": "next" 7 | } 8 | ] 9 | }, 10 | "include": [ 11 | "**/*.ts", 12 | "**/*.tsx", 13 | "next-env.d.ts", 14 | "next.config.js", 15 | ".next/types/**/*.ts" 16 | ], 17 | "exclude": [ 18 | "node_modules" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /04.chat-app/.eslintrc.js: -------------------------------------------------------------------------------- 1 | // This configuration only applies to the package manager root. 2 | /** @type {import("eslint").Linter.Config} */ 3 | 4 | module.exports = { 5 | ignorePatterns: ["apps/**", "packages/**"], 6 | extends: ["@chatApp/eslint-config/library.js"], 7 | parser: "@typescript-eslint/parser", 8 | parserOptions: { 9 | project: true, 10 | }, 11 | rules: { 12 | "no-unused-vars": "off", 13 | "no-redeclare": "off", 14 | } 15 | }; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/controller/db.controller.ts: -------------------------------------------------------------------------------- 1 | import prisma from "@stba/db/prisma"; 2 | 3 | const dbConnect = async () => { 4 | try { 5 | await prisma.$connect(); 6 | console.log("✅ Database connected successfully!"); 7 | } catch (err) { 8 | console.error("❌ Error connecting to the database:", err); 9 | process.exit(1); // Exit if DB connection fails 10 | } 11 | }; 12 | 13 | export default dbConnect; 14 | -------------------------------------------------------------------------------- /06.blog-web/.eslintrc.js: -------------------------------------------------------------------------------- 1 | // This configuration only applies to the package manager root. 2 | /** @type {import("eslint").Linter.Config} */ 3 | 4 | module.exports = { 5 | ignorePatterns: ["apps/**", "packages/**"], 6 | extends: ["@chatApp/eslint-config/library.js"], 7 | parser: "@typescript-eslint/parser", 8 | parserOptions: { 9 | project: true, 10 | }, 11 | rules: { 12 | "no-unused-vars": "off", 13 | "no-redeclare": "off", 14 | } 15 | }; -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/routes/comment.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import authenticate from "../middleware/authenticate"; 3 | import { createComment, getComments } from "../controller/comment.controller"; 4 | 5 | const router = Router(); 6 | 7 | //create comment 8 | router.post("/:blogId", authenticate, createComment); 9 | 10 | //get all comments for blogId 11 | router.get("/:blogId", authenticate, getComments) 12 | 13 | export default router; -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/controller/start.controller.ts: -------------------------------------------------------------------------------- 1 | import dbConnect from "./db.controller"; 2 | 3 | const startServer = async (port: number) => { 4 | try { 5 | console.log("🚀 Starting server..."); 6 | await dbConnect(); // Connect to database 7 | console.log(`✅ Server is running on http://localhost:${port} ⚙️`); 8 | } catch (err) { 9 | console.log("❌ Error while starting server: " + err); 10 | } 11 | }; 12 | 13 | export default startServer; 14 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/.eslintrc.js: -------------------------------------------------------------------------------- 1 | // This configuration only applies to the package manager root. 2 | /** @type {import("eslint").Linter.Config} */ 3 | 4 | module.exports = { 5 | ignorePatterns: ["apps/**", "packages/**"], 6 | extends: ["@chatApp/eslint-config/library.js"], 7 | parser: "@typescript-eslint/parser", 8 | parserOptions: { 9 | project: true, 10 | }, 11 | rules: { 12 | "no-unused-vars": "off", 13 | "no-redeclare": "off", 14 | } 15 | }; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/src/client/enum.ts: -------------------------------------------------------------------------------- 1 | //roles 2 | export enum Role { 3 | STUDENT = "STUDENT", 4 | TEACHER = "TEACHER", 5 | ADMIN = "ADMIN", 6 | }; 7 | 8 | //registration status 9 | export enum Status { 10 | APPROVED = "APPROVED", 11 | PENDING = "PENDING", 12 | DENIED = "DENIED" 13 | }; 14 | 15 | //appointment status 16 | export enum AppointmentStatus { 17 | APPROVED = "APPROVED", 18 | PENDING = "PENDING", 19 | CANCELLED = "CANCELLED" 20 | }; -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/pages/Signin.tsx: -------------------------------------------------------------------------------- 1 | import { Quote } from "../components/Quote"; 2 | import { Auth } from "../components/signin/Auth"; 3 | 4 | const Signin = () => { 5 | return ( 6 |
7 |
8 |
9 | 10 |
11 |
12 | 13 |
14 |
15 |
16 | ); 17 | }; 18 | 19 | export default Signin; 20 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/pages/Signup.tsx: -------------------------------------------------------------------------------- 1 | import { Auth } from "../components/signup/Auth"; 2 | import { Quote } from "../components/Quote"; 3 | 4 | const Signup = () => { 5 | return ( 6 |
7 |
8 |
9 | 10 |
11 |
12 | 13 |
14 |
15 |
16 | ); 17 | }; 18 | 19 | export default Signup; 20 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/layout.tsx: -------------------------------------------------------------------------------- 1 | import Sidebar from '@stba/ui/Sidebar'; 2 | import { Role } from '@stba/types/client'; 3 | 4 | export default function DashboardLayout({ 5 | children, 6 | }: { 7 | children: React.ReactNode; 8 | }) { 9 | return ( 10 |
11 | 12 |
{children}
13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/controller/start.controller.ts: -------------------------------------------------------------------------------- 1 | import dbConnect from "./db.controller"; 2 | 3 | const startServer = async (port: number) => { 4 | try { 5 | console.log("🚀 Starting server..."); 6 | await dbConnect(); // Connect to database 7 | console.log(`✅ Server is running on http://localhost:${port} ⚙️`); 8 | } catch (err) { 9 | console.log("❌ Error while starting server: " + err); 10 | } 11 | }; 12 | 13 | export default startServer; 14 | -------------------------------------------------------------------------------- /02.Calculator/src/components/Button.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { ButtonProps } from "../types"; 3 | 4 | const Button: React.FC = ({ value, onClick }) => ( 5 | 11 | ); 12 | 13 | export default Button; 14 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/src/app/dashboard/layout.tsx: -------------------------------------------------------------------------------- 1 | import Sidebar from '@stba/ui/Sidebar'; 2 | import { Role } from '@stba/types/client'; 3 | 4 | export default function DashboardLayout({ 5 | children, 6 | }: { 7 | children: React.ReactNode; 8 | }) { 9 | return ( 10 |
11 | 12 |
{children}
13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/layout.tsx: -------------------------------------------------------------------------------- 1 | import Sidebar from '@stba/ui/Sidebar'; 2 | import { Role } from '@stba/types/client'; 3 | 4 | export default function DashboardLayout({ 5 | children, 6 | }: { 7 | children: React.ReactNode; 8 | }) { 9 | return ( 10 |
11 | 12 |
{children}
13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /04.chat-app/packages/db/index.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | const prismaClientSingleton = () => { 4 | return new PrismaClient(); 5 | }; 6 | 7 | declare global { 8 | var prismaGlobal: undefined | ReturnType; 9 | } 10 | 11 | const prisma: ReturnType = globalThis.prismaGlobal ?? prismaClientSingleton(); 12 | 13 | export default prisma; 14 | 15 | if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma; 16 | -------------------------------------------------------------------------------- /07.portfolio/public/svg/front-html.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /03.tic-tac-toe/turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turbo.build/schema.json", 3 | "ui": "tui", 4 | "tasks": { 5 | "build": { 6 | "dependsOn": ["^build"], 7 | "inputs": ["$TURBO_DEFAULT$", ".env*"], 8 | "outputs": [".next/**", "!.next/cache/**"] 9 | }, 10 | "lint": { 11 | "dependsOn": ["^lint"] 12 | }, 13 | "check-types": { 14 | "dependsOn": ["^check-types"] 15 | }, 16 | "dev": { 17 | "cache": false, 18 | "persistent": true 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /04.chat-app/turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turbo.build/schema.json", 3 | "ui": "tui", 4 | "tasks": { 5 | "build": { 6 | "dependsOn": ["^build"], 7 | "inputs": ["$TURBO_DEFAULT$", ".env*"], 8 | "outputs": [".next/**", "!.next/cache/**"] 9 | }, 10 | "lint": { 11 | "dependsOn": ["^lint"] 12 | }, 13 | "check-types": { 14 | "dependsOn": ["^check-types"] 15 | }, 16 | "dev": { 17 | "cache": false, 18 | "persistent": true 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /06.blog-web/turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turbo.build/schema.json", 3 | "ui": "tui", 4 | "tasks": { 5 | "build": { 6 | "dependsOn": ["^build"], 7 | "inputs": ["$TURBO_DEFAULT$", ".env*"], 8 | "outputs": [".next/**", "!.next/cache/**"] 9 | }, 10 | "lint": { 11 | "dependsOn": ["^lint"] 12 | }, 13 | "check-types": { 14 | "dependsOn": ["^check-types"] 15 | }, 16 | "dev": { 17 | "cache": false, 18 | "persistent": true 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /07.portfolio/public/svg/front-css.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /06.blog-web/packages/db/index.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "./prisma/generated/prisma/client"; 2 | 3 | const prismaClientSingleton = () => { 4 | return new PrismaClient(); 5 | }; 6 | 7 | declare global { 8 | var prismaGlobal: undefined | ReturnType; 9 | } 10 | 11 | const prisma: ReturnType = globalThis.prismaGlobal ?? prismaClientSingleton(); 12 | 13 | export default prisma; 14 | 15 | if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma; 16 | -------------------------------------------------------------------------------- /07.portfolio/public/svg/front-tailwind.svg: -------------------------------------------------------------------------------- 1 | 2 | file_type_tailwind -------------------------------------------------------------------------------- /07.portfolio/src/types/projectType.ts: -------------------------------------------------------------------------------- 1 | export type modal = { 2 | active: boolean; 3 | index: number; 4 | }; 5 | 6 | export interface ProjectProps { 7 | index: number; 8 | title: string; 9 | description: string; 10 | link: string; 11 | setModal: ({}: modal) => void; 12 | } 13 | 14 | export interface modalProps { 15 | modal: modal; 16 | projects: project[]; 17 | } 18 | 19 | export interface project { 20 | title: string; 21 | description: string; 22 | src: string; 23 | link: string; 24 | color: string; 25 | } 26 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # production 13 | /build 14 | /dist 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | # env files (can opt-in for commiting if needed) 26 | .env 27 | 28 | # typescript 29 | *.tsbuildinfo 30 | next-env.d.ts 31 | -------------------------------------------------------------------------------- /06.blog-web/apps/server/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # production 13 | /build 14 | /dist 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | # env files (can opt-in for commiting if needed) 26 | .env 27 | 28 | # typescript 29 | *.tsbuildinfo 30 | next-env.d.ts 31 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/server/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # production 13 | /build 14 | /dist 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | # env files (can opt-in for commiting if needed) 26 | .env 27 | 28 | # typescript 29 | *.tsbuildinfo 30 | next-env.d.ts 31 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/utils/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@stba/utils", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "lint": "eslint . --max-warnings 0", 8 | "check-types": "tsc --noEmit" 9 | }, 10 | "exports": { 11 | "./*": "./src/*.ts" 12 | }, 13 | "dependencies": { 14 | "axios": "^1.8.4" 15 | }, 16 | "devDependencies": { 17 | "@stba/eslint-config": "*", 18 | "@stba/typescript-config": "*", 19 | "typescript": "5.7.3" 20 | } 21 | } -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turbo.build/schema.json", 3 | "ui": "tui", 4 | "tasks": { 5 | "build": { 6 | "dependsOn": ["^build"], 7 | "inputs": ["$TURBO_DEFAULT$", ".env*"], 8 | "outputs": [".next/**", "!.next/cache/**"] 9 | }, 10 | "lint": { 11 | "dependsOn": ["^lint"] 12 | }, 13 | "check-types": { 14 | "dependsOn": ["^check-types"] 15 | }, 16 | "dev": { 17 | "cache": false, 18 | "persistent": true 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/db/index.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "./prisma/generated/prisma/client"; 2 | 3 | const prismaClientSingleton = () => { 4 | return new PrismaClient(); 5 | }; 6 | 7 | declare global { 8 | var prismaGlobal: undefined | ReturnType; 9 | } 10 | 11 | const prisma: ReturnType = globalThis.prismaGlobal ?? prismaClientSingleton(); 12 | 13 | export default prisma; 14 | 15 | if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma; 16 | -------------------------------------------------------------------------------- /06.blog-web/packages/types/src/server/validators/comment.validator.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | //create comments 4 | export const CreateCommentSchema = z.object({ 5 | userId: z.string().uuid("Invalid userId").nonempty("can't leave empty"), 6 | blogId: z.string().uuid("Invalid blogId").nonempty("can't leave empty"), 7 | comment: z.string().nonempty("Comment can't be empty"), 8 | }); 9 | 10 | //create comments 11 | export const GetCommentsSchema = z.object({ 12 | blogId: z.string().uuid("Invalid blogId").nonempty("can't leave empty"), 13 | }); 14 | -------------------------------------------------------------------------------- /01.WeatherApp/src/UI/DotsLoading.tsx: -------------------------------------------------------------------------------- 1 | // DotsLoading.js 2 | import React from "react"; 3 | import "./DotsLoading.css"; // Import the CSS file for keyframes 4 | 5 | const DotsLoading = () => { 6 | return ( 7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | ); 15 | }; 16 | 17 | export default DotsLoading; 18 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/routes/auth.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import { login, logout, registerStudent, setTeacherPassword } from "../controller/auth.controller"; 3 | 4 | const router = Router(); 5 | 6 | //student register 7 | router.post("/student/register", registerStudent); 8 | 9 | //teacher set password 10 | router.post('/teacher/password', setTeacherPassword); 11 | 12 | //user login 13 | router.post("/login", login); 14 | 15 | //user log out 16 | router.post("/logout", logout); 17 | 18 | export default router; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/src/client/auth.validator.ts: -------------------------------------------------------------------------------- 1 | import z from "zod"; 2 | import { AddTeacherSchema, SetPasswordSchema, StudentRegisterSchema, UpdateTeacherSchema, UserLoginSchema } from "../server"; 3 | 4 | export type UserLoginType = z.infer; 5 | export type StudentRegisterType = z.infer; 6 | export type SetPasswordType = z.infer; 7 | export type AddTeacherType = z.infer; 8 | export type UpdateTeacherType = z.infer; -------------------------------------------------------------------------------- /07.portfolio/src/screens/Landing.tsx: -------------------------------------------------------------------------------- 1 | import AppBar from "@/components/ui/AppBar"; 2 | import Dock from "@/components/ui/Dock"; 3 | import Hero from "@/components/ui/Hero"; 4 | import Projects from "@/components/ui/Projects"; 5 | import Skills from "@/components/ui/Skills"; 6 | import React from "react"; 7 | 8 | const Landing = () => { 9 | return ( 10 |
11 | 12 | 13 | 14 | 15 | 16 |
17 | ); 18 | }; 19 | 20 | export default Landing; 21 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # production 13 | /build 14 | /dist 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | # env files (can opt-in for commiting if needed) 26 | .env 27 | 28 | # typescript 29 | *.tsbuildinfo 30 | next-env.d.ts 31 | -------------------------------------------------------------------------------- /07.portfolio/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | 38 | -------------------------------------------------------------------------------- /01.WeatherApp/src/store/index.ts: -------------------------------------------------------------------------------- 1 | export const weatherIconMap: { [key: string]: string } = { 2 | Thunderstorm: "ri-thunderstorms-line", 3 | Drizzle: "ri-drizzle-line", 4 | Rain: "ri-rainy-line", 5 | Snow: "ri-snowy-line", 6 | Mist: "ri-foggy-line", 7 | Smoke: "ri-smoke-line", 8 | Haze: "ri-haze-line", 9 | Dust: "ri-dust-line", 10 | Fog: "ri-foggy-line", 11 | Sand: "ri-sandstorm-line", 12 | Ash: "ri-volcano-line", 13 | Squall: "ri-windy-line", 14 | Tornado: "ri-tornado-line", 15 | Clear: "ri-sun-line", 16 | Clouds: "ri-cloudy-line", 17 | }; 18 | -------------------------------------------------------------------------------- /04.chat-app/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # Dependencies 4 | node_modules 5 | .pnp 6 | .pnp.js 7 | 8 | # Local env files 9 | .env 10 | .env.local 11 | .env.development.local 12 | .env.test.local 13 | .env.production.local 14 | 15 | # Testing 16 | coverage 17 | 18 | # Turbo 19 | .turbo 20 | 21 | # Vercel 22 | .vercel 23 | 24 | # Build Outputs 25 | .next/ 26 | out/ 27 | build 28 | dist 29 | 30 | 31 | # Debug 32 | npm-debug.log* 33 | yarn-debug.log* 34 | yarn-error.log* 35 | 36 | # Misc 37 | .DS_Store 38 | *.pem 39 | -------------------------------------------------------------------------------- /06.blog-web/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # Dependencies 4 | node_modules 5 | .pnp 6 | .pnp.js 7 | 8 | # Local env files 9 | .env 10 | .env.local 11 | .env.development.local 12 | .env.test.local 13 | .env.production.local 14 | 15 | # Testing 16 | coverage 17 | 18 | # Turbo 19 | .turbo 20 | 21 | # Vercel 22 | .vercel 23 | 24 | # Build Outputs 25 | .next/ 26 | out/ 27 | build 28 | dist 29 | 30 | 31 | # Debug 32 | npm-debug.log* 33 | yarn-debug.log* 34 | yarn-error.log* 35 | 36 | # Misc 37 | .DS_Store 38 | *.pem 39 | -------------------------------------------------------------------------------- /03.tic-tac-toe/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # Dependencies 4 | node_modules 5 | .pnp 6 | .pnp.js 7 | 8 | # Local env files 9 | .env 10 | .env.local 11 | .env.development.local 12 | .env.test.local 13 | .env.production.local 14 | 15 | # Testing 16 | coverage 17 | 18 | # Turbo 19 | .turbo 20 | 21 | # Vercel 22 | .vercel 23 | 24 | # Build Outputs 25 | .next/ 26 | out/ 27 | build 28 | dist 29 | 30 | 31 | # Debug 32 | npm-debug.log* 33 | yarn-debug.log* 34 | yarn-error.log* 35 | 36 | # Misc 37 | .DS_Store 38 | *.pem 39 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/controller/startServer.ts: -------------------------------------------------------------------------------- 1 | import dbConnect from "./dbConnect"; 2 | import { wss } from "../app"; 3 | import socketHandler from "./socketHandler"; 4 | 5 | const startServer = async (port: number) => { 6 | try { 7 | console.log("🚀 Starting server..."); 8 | await dbConnect(); // Connect to database 9 | socketHandler(wss); // Initialize WebSocket events 10 | console.log(`✅ Server is running on http://localhost:${port} ⚙️`); 11 | } catch (err) { 12 | console.log("❌ Error while starting server: " + err); 13 | } 14 | }; 15 | 16 | export default startServer; 17 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/app/room/[id]/page.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useSearchParams } from "next/navigation"; 4 | import Board from "../../../components/Board"; 5 | import { use } from "react"; 6 | 7 | export default function RoomPage({ params }: { params: Promise<{ id: string }> }) { 8 | const { id } = use(params); // Unwrap the params using use() 9 | const searchParams = useSearchParams(); 10 | const playerName = searchParams.get("playerName") || "Anonymous"; // Get player name from URL 11 | 12 | return ( 13 | 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # env files (can opt-in for commiting if needed) 29 | .env* 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/db/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@stba/db", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "exports": { 7 | "./prisma": "./index.ts" 8 | }, 9 | "dependencies": { 10 | "@prisma/client": "^6.3.1", 11 | "@types/bcrypt": "^5.0.2", 12 | "bcrypt": "^5.1.1", 13 | "prisma": "^6.6.0" 14 | }, 15 | "devDependencies": { 16 | "@stba/eslint-config": "*", 17 | "@stba/typescript-config": "*", 18 | "typescript": "5.7.3" 19 | }, 20 | "prisma": { 21 | "seed": "ts-node prisma/seed.ts" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /03.tic-tac-toe/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tic-tac-toe", 3 | "private": true, 4 | "scripts": { 5 | "build": "turbo run build", 6 | "dev": "turbo run dev", 7 | "lint": "turbo run lint", 8 | "format": "prettier --write \"**/*.{ts,tsx,md}\"", 9 | "check-types": "turbo run check-types" 10 | }, 11 | "devDependencies": { 12 | "prettier": "^3.5.0", 13 | "turbo": "^2.4.4", 14 | "typescript": "5.7.3" 15 | }, 16 | "engines": { 17 | "node": ">=18" 18 | }, 19 | "packageManager": "yarn@1.22.22", 20 | "workspaces": [ 21 | "apps/*", 22 | "packages/*" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /04.chat-app/packages/db/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chatApp/db", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "exports": { 7 | "./prisma": "./index.ts" 8 | }, 9 | "dependencies": { 10 | "@prisma/client": "^6.3.1", 11 | "@types/bcrypt": "^5.0.2", 12 | "@chatApp/utils": "*", 13 | "bcrypt": "^5.1.1", 14 | "prisma": "^6.3.1" 15 | }, 16 | "devDependencies": { 17 | "@chatApp/eslint-config": "*", 18 | "@chatApp/typescript-config": "*", 19 | "typescript": "5.7.3" 20 | }, 21 | "prisma": { 22 | "seed": "ts-node prisma/seed.ts" 23 | } 24 | } -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/src/client/Props.ts: -------------------------------------------------------------------------------- 1 | import { AppointmentStatus, Role, Status } from "./enum"; 2 | 3 | //navbar props 4 | export interface NavBarProps { 5 | appName: Role, 6 | className: string 7 | }; 8 | 9 | export interface LoginProps { 10 | role: Role 11 | } 12 | export interface RegistrationProps { 13 | role: Role 14 | } 15 | export interface UpdatePasswordProps { 16 | role: Role, 17 | teacherId?: string 18 | } 19 | export interface StudentStatusProps { 20 | status: Status 21 | } 22 | export interface TeacherAppointmentProps { 23 | status: AppointmentStatus; 24 | } -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # env files (can opt-in for commiting if needed) 29 | .env* 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # Dependencies 4 | node_modules 5 | .pnp 6 | .pnp.js 7 | 8 | # Local env files 9 | .env 10 | .env.local 11 | .env.development.local 12 | .env.test.local 13 | .env.production.local 14 | 15 | # Testing 16 | coverage 17 | 18 | # Turbo 19 | .turbo 20 | 21 | # Vercel 22 | .vercel 23 | 24 | # Build Outputs 25 | .next/ 26 | out/ 27 | build 28 | dist 29 | 30 | 31 | # Debug 32 | npm-debug.log* 33 | yarn-debug.log* 34 | yarn-error.log* 35 | 36 | # Misc 37 | .DS_Store 38 | *.pem 39 | -------------------------------------------------------------------------------- /01.WeatherApp/README.md: -------------------------------------------------------------------------------- 1 | # Weather App ⛅ 2 | 3 | ![Weather](./public/weather-demo.png) 4 | 5 | ## Features 6 | 7 | - Search Bar 8 | - weather, Temperature, Humidity, Wind Speed 9 | - Sunrise & Sunset time 10 | 11 | ## How to run app locally 12 | 13 | 1. install the dependency 14 | 15 | ```bash 16 | #go to the 01.WeatherApp 17 | cd 01.WeatherApp 18 | 19 | #install dependency 20 | yarn install 21 | 22 | ``` 23 | 24 | 2. copy `.env.example` as `.env` and fill up the data 25 | 26 | ```bash 27 | #openweathermap API key 28 | VITE_API_KEY= 29 | ``` 30 | 31 | 3. Now run the app 32 | 33 | ```bash 34 | yarn run dev 35 | ``` 36 | -------------------------------------------------------------------------------- /03.tic-tac-toe/packages/typescript-config/base.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "declarationMap": true, 6 | "esModuleInterop": true, 7 | "incremental": false, 8 | "isolatedModules": true, 9 | "lib": ["es2022", "DOM", "DOM.Iterable"], 10 | "module": "NodeNext", 11 | "moduleDetection": "force", 12 | "moduleResolution": "NodeNext", 13 | "noUncheckedIndexedAccess": true, 14 | "resolveJsonModule": true, 15 | "skipLibCheck": true, 16 | "strict": true, 17 | "target": "ES2022" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /04.chat-app/packages/typescript-config/base.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "declarationMap": true, 6 | "esModuleInterop": true, 7 | "incremental": false, 8 | "isolatedModules": true, 9 | "lib": ["es2022", "DOM", "DOM.Iterable"], 10 | "module": "NodeNext", 11 | "moduleDetection": "force", 12 | "moduleResolution": "NodeNext", 13 | "noUncheckedIndexedAccess": true, 14 | "resolveJsonModule": true, 15 | "skipLibCheck": true, 16 | "strict": true, 17 | "target": "ES2022" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /06.blog-web/packages/typescript-config/base.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "declarationMap": true, 6 | "esModuleInterop": true, 7 | "incremental": false, 8 | "isolatedModules": true, 9 | "lib": ["es2022", "DOM", "DOM.Iterable"], 10 | "module": "NodeNext", 11 | "moduleDetection": "force", 12 | "moduleResolution": "NodeNext", 13 | "noUncheckedIndexedAccess": true, 14 | "resolveJsonModule": true, 15 | "skipLibCheck": true, 16 | "strict": true, 17 | "target": "ES2022" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /06.blog-web/packages/db/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@blog-web/db", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "exports": { 7 | "./prisma": "./index.ts" 8 | }, 9 | "dependencies": { 10 | "@faker-js/faker": "^9.7.0", 11 | "@prisma/client": "^6.3.1", 12 | "@types/bcrypt": "^5.0.2", 13 | "bcrypt": "^5.1.1", 14 | "prisma": "^6.6.0" 15 | }, 16 | "devDependencies": { 17 | "@blog-web/eslint-config": "*", 18 | "@blog-web/typescript-config": "*", 19 | "typescript": "5.7.3" 20 | }, 21 | "prisma": { 22 | "seed": "ts-node prisma/seed.ts" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # env files (can opt-in for commiting if needed) 29 | .env* 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # env files (can opt-in for commiting if needed) 29 | .env* 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # env files (can opt-in for commiting if needed) 29 | .env* 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/components/footer.tsx: -------------------------------------------------------------------------------- 1 | const Footer = () => { 2 | return ( 3 | 11 | ); 12 | } 13 | 14 | export default Footer; -------------------------------------------------------------------------------- /07.portfolio/src/components/elements/skill/Circle.tsx: -------------------------------------------------------------------------------- 1 | import { forwardRef } from "react"; 2 | import { cn } from "@/lib/utils"; 3 | 4 | export const Circle = forwardRef< 5 | HTMLDivElement, 6 | { className?: string; children?: React.ReactNode } 7 | >(({ className, children }, ref) => { 8 | return ( 9 |
16 | {children} 17 |
18 | ); 19 | }); 20 | 21 | Circle.displayName = "Circle"; 22 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/typescript-config/base.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "declarationMap": true, 6 | "esModuleInterop": true, 7 | "incremental": false, 8 | "isolatedModules": true, 9 | "lib": ["es2022", "DOM", "DOM.Iterable"], 10 | "module": "NodeNext", 11 | "moduleDetection": "force", 12 | "moduleResolution": "NodeNext", 13 | "noUncheckedIndexedAccess": true, 14 | "resolveJsonModule": true, 15 | "skipLibCheck": true, 16 | "strict": true, 17 | "target": "ES2022" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /02.Calculator/README.md: -------------------------------------------------------------------------------- 1 | # Calculator 2 | 3 | ![calculator](./public/calculator-demo.png) 4 | 5 | ## Features 6 | 7 | - Perform basic operations(addition, subtraction, multiplication, and division.) 8 | - Calculate with BODMAS rule. 9 | - Perform advance operations(square root, percentage, Exponentiation (xʸ), Common Logarithm (log), and Exponential Function (eˣ)). 10 | - Store history on local storage. 11 | - toggle between light & dark mode. 12 | 13 | ### Run the App locally 14 | 15 | ```bash 16 | #go to the 02.Calculator 17 | cd 02.Calculator 18 | 19 | #install dependency 20 | yarn install 21 | 22 | #run the app 23 | yarn run dev 24 | 25 | ``` 26 | -------------------------------------------------------------------------------- /06.blog-web/packages/types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@blog-web/types", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "lint": "eslint . --max-warnings 0", 8 | "check-types": "tsc --noEmit" 9 | }, 10 | "exports": { 11 | "./server": "./src/server/index.ts", 12 | "./client": "./src/client/index.ts" 13 | }, 14 | "dependencies": { 15 | "react": "^19.0.0", 16 | "zod": "^3.24.2" 17 | }, 18 | "devDependencies": { 19 | "@blog-web/eslint-config": "*", 20 | "@blog-web/typescript-config": "*", 21 | "@types/react": "19.0.8", 22 | "typescript": "5.7.3" 23 | } 24 | } -------------------------------------------------------------------------------- /04.chat-app/packages/types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chatApp/types", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "lint": "eslint . --max-warnings 0", 8 | "check-types": "tsc --noEmit" 9 | }, 10 | "exports": { 11 | "./serverTypes": "./src/serverTypes.ts", 12 | "./clientTypes": "./src/clientTypes.ts" 13 | }, 14 | "dependencies": { 15 | "react": "^19.0.0", 16 | "zod": "^3.24.2" 17 | }, 18 | "devDependencies": { 19 | "@chatApp/eslint-config": "*", 20 | "@chatApp/typescript-config": "*", 21 | "@types/react": "19.0.8", 22 | "typescript": "5.7.3" 23 | } 24 | } -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/utils/gameLogic.ts: -------------------------------------------------------------------------------- 1 | export const checkWinner = (board: string[]): string | null => { 2 | const winPatterns = [ 3 | [0, 1, 2], [3, 4, 5], [6, 7, 8], // Rows 4 | [0, 3, 6], [1, 4, 7], [2, 5, 8], // Columns 5 | [0, 4, 8], [2, 4, 6] // Diagonals 6 | ]; 7 | 8 | for (const [a, b, c] of winPatterns) { 9 | if (a !== undefined && b !== undefined && c !== undefined && board[a] && board[a] === board[b] && board[a] === board[c]) { 10 | return board[a]; // ✅ Return winner immediately 11 | } 12 | } 13 | 14 | return board.includes("") ? null : "Tie"; // ✅ No need for extra iterations 15 | }; 16 | 17 | 18 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@stba/types", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "lint": "eslint . --max-warnings 0", 8 | "check-types": "tsc --noEmit" 9 | }, 10 | "exports": { 11 | "./serverTypes": "./src/server/index.ts", 12 | "./client": "./src/client/index.ts" 13 | }, 14 | "dependencies": { 15 | "react": "^19.0.0", 16 | "zod": "^3.24.2" 17 | }, 18 | "devDependencies": { 19 | "@stba/eslint-config": "*", 20 | "@stba/typescript-config": "*", 21 | "@types/react": "19.0.8", 22 | "typescript": "5.7.3" 23 | } 24 | } -------------------------------------------------------------------------------- /07.portfolio/README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | # alfaarghya.dev 5 | 6 | ### Shape Ideas with Technology 7 | 8 | 🚀 A personal portfolio created by Arghya Das (alfaarghya), a full-stack software developer, focused on crafting meaningful web applications with creativity and technical expertise, turning intricate ideas into real-world digital solutions, one line of code at a time 9 | 10 |
11 | 12 | ## A Glance of My Portfolio 13 | 14 | 15 | 16 | # 17 | 18 |
19 | Website is Complete, But I Will add more things over the time, so stay tuned :) 20 |
21 | -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/routes/blog.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import authenticate from "../middleware/authenticate"; 3 | import { createBlog, deleteBlog, getBlog, getBlogs, updateBlog } from "../controller/blog.controller"; 4 | 5 | const router = Router(); 6 | 7 | //create a blog 8 | router.post("/", authenticate, createBlog); 9 | 10 | //read all blog 11 | router.get("/", authenticate, getBlogs); 12 | 13 | //read a blog 14 | router.get("/:id", authenticate, getBlog); 15 | 16 | //update a blog 17 | router.put("/:id", authenticate, updateBlog); 18 | 19 | //delete a blog 20 | router.delete("/:id", authenticate, deleteBlog); 21 | 22 | 23 | export default router; -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/components/Cell.tsx: -------------------------------------------------------------------------------- 1 | import { CellProps } from "../types"; 2 | 3 | const Cell = ({ value, onClick }: CellProps) => { 4 | const getCellColor = (val: string) => { 5 | if (val === "X") return "text-blue-500"; // Blue for X 6 | if (val === "O") return "text-red-500"; // Red for O 7 | return "text-gray-800"; // Default color 8 | }; 9 | 10 | return ( 11 | 18 | ); 19 | }; 20 | 21 | export default Cell; 22 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/src/components/ResultDisplay.tsx: -------------------------------------------------------------------------------- 1 | import { ResultProps } from "../types"; 2 | 3 | const ResultDisplay = ({ result, players, currentTurn }: ResultProps) => ( 4 |
5 | {result 6 | ? 7 | (result === "Tie" 8 | ? 9 |

It's a Tie!

10 | : 11 |

{result} wins the game

12 | ) 13 | : 14 |

15 | Turn: {players[currentTurn] || "Waiting for players..."} 16 |

17 | } 18 |
19 | ); 20 | 21 | export default ResultDisplay; 22 | -------------------------------------------------------------------------------- /07.portfolio/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["dom", "dom.iterable", "esnext"], 4 | "allowJs": true, 5 | "skipLibCheck": true, 6 | "strict": true, 7 | "noEmit": true, 8 | "esModuleInterop": true, 9 | "module": "esnext", 10 | "moduleResolution": "bundler", 11 | "resolveJsonModule": true, 12 | "isolatedModules": true, 13 | "jsx": "preserve", 14 | "incremental": true, 15 | "plugins": [ 16 | { 17 | "name": "next" 18 | } 19 | ], 20 | "paths": { 21 | "@/*": ["./src/*"] 22 | } 23 | }, 24 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 25 | "exclude": ["node_modules"] 26 | } 27 | -------------------------------------------------------------------------------- /01.WeatherApp/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true 22 | }, 23 | "include": ["vite.config.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /02.Calculator/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true 22 | }, 23 | "include": ["vite.config.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/src/Footer.tsx: -------------------------------------------------------------------------------- 1 | const Footer = () => { 2 | return ( 3 |
4 |

5 | 6 | © {new Date().getFullYear()} STBA. All rights reserved. 7 |

8 |
9 | GitHub 10 | LinkedIn 11 | Instagram 12 |
13 |
14 | ) 15 | } 16 | 17 | export default Footer; 18 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true 22 | }, 23 | "include": ["vite.config.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /07.portfolio/src/screens/BootScreen.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import Preloader from "@/components/elements/bootscreen/BootElement"; 4 | import { AnimatePresence } from "framer-motion"; 5 | import React, { useEffect, useState } from "react"; 6 | 7 | const BootScreen = () => { 8 | const [isLoading, setIsLoading] = useState(true); 9 | useEffect(() => { 10 | (async () => { 11 | setTimeout(() => { 12 | setIsLoading(false); 13 | document.body.style.cursor = "default"; 14 | window.scrollTo(0, 0); 15 | }, 2000); 16 | })(); 17 | }, []); 18 | return ( 19 | {isLoading && } 20 | ); 21 | }; 22 | 23 | export default BootScreen; 24 | -------------------------------------------------------------------------------- /04.chat-app/packages/types/src/clientTypes.ts: -------------------------------------------------------------------------------- 1 | export interface WebSocketOptions { 2 | chatId: string; 3 | type: MessageType; 4 | userId?: string; 5 | sender?: string, 6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 7 | onMessage: (data: any) => void; 8 | } 9 | type MessageType = "room" | "direct"; 10 | 11 | 12 | export interface ChatRoom { 13 | id: string; 14 | name: string; 15 | createdAt: string; 16 | } 17 | 18 | export interface InboxUser { 19 | id: string; 20 | username: string; 21 | } 22 | 23 | export interface User { 24 | id: string; 25 | username: string; 26 | } 27 | 28 | export interface Message { 29 | id?: string; 30 | senderId: string; 31 | content: string; 32 | createdAt?: string; 33 | sender: string; 34 | } -------------------------------------------------------------------------------- /06.blog-web/packages/eslint-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@blog-web/eslint-config", 3 | "version": "0.0.0", 4 | "type": "module", 5 | "private": true, 6 | "exports": { 7 | "./base": "./base.js", 8 | "./next-js": "./next.js", 9 | "./react-internal": "./react-internal.js" 10 | }, 11 | "devDependencies": { 12 | "@eslint/js": "^9.24.0", 13 | "@next/eslint-plugin-next": "^15.3.0", 14 | "eslint": "^9.24.0", 15 | "eslint-config-prettier": "^10.1.1", 16 | "eslint-plugin-only-warn": "^1.1.0", 17 | "eslint-plugin-react": "^7.37.4", 18 | "eslint-plugin-react-hooks": "^5.2.0", 19 | "eslint-plugin-turbo": "^2.5.0", 20 | "globals": "^16.0.0", 21 | "typescript": "^5.8.2", 22 | "typescript-eslint": "^8.29.0" 23 | } 24 | } -------------------------------------------------------------------------------- /04.chat-app/packages/eslint-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chatApp/eslint-config", 3 | "version": "0.0.0", 4 | "type": "module", 5 | "private": true, 6 | "exports": { 7 | "./base": "./base.js", 8 | "./next-js": "./next.js", 9 | "./react-internal": "./react-internal.js" 10 | }, 11 | "devDependencies": { 12 | "@eslint/js": "^9.22.0", 13 | "@next/eslint-plugin-next": "^15.2.1", 14 | "eslint": "^9.22.0", 15 | "eslint-config-prettier": "^10.1.1", 16 | "eslint-plugin-only-warn": "^1.1.0", 17 | "eslint-plugin-react": "^7.37.4", 18 | "eslint-plugin-react-hooks": "^5.2.0", 19 | "eslint-plugin-turbo": "^2.4.4", 20 | "globals": "^16.0.0", 21 | "typescript": "^5.8.2", 22 | "typescript-eslint": "^8.26.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /03.tic-tac-toe/packages/eslint-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@tic-tac-toe/eslint-config", 3 | "version": "0.0.0", 4 | "type": "module", 5 | "private": true, 6 | "exports": { 7 | "./base": "./base.js", 8 | "./next-js": "./next.js", 9 | "./react-internal": "./react-internal.js" 10 | }, 11 | "devDependencies": { 12 | "@eslint/js": "^9.21.0", 13 | "@next/eslint-plugin-next": "^15.1.6", 14 | "eslint": "^9.21.0", 15 | "eslint-config-prettier": "^10.0.1", 16 | "eslint-plugin-only-warn": "^1.1.0", 17 | "eslint-plugin-react": "^7.37.4", 18 | "eslint-plugin-react-hooks": "^5.1.0", 19 | "eslint-plugin-turbo": "^2.4.0", 20 | "globals": "^15.15.0", 21 | "typescript": "^5.7.3", 22 | "typescript-eslint": "^8.24.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/eslint-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@stba/eslint-config", 3 | "version": "0.0.0", 4 | "type": "module", 5 | "private": true, 6 | "exports": { 7 | "./base": "./base.js", 8 | "./next-js": "./next.js", 9 | "./react-internal": "./react-internal.js" 10 | }, 11 | "devDependencies": { 12 | "@eslint/js": "^9.24.0", 13 | "@next/eslint-plugin-next": "^15.2.1", 14 | "eslint": "^9.24.0", 15 | "eslint-config-prettier": "^10.1.1", 16 | "eslint-plugin-only-warn": "^1.1.0", 17 | "eslint-plugin-react": "^7.37.4", 18 | "eslint-plugin-react-hooks": "^5.2.0", 19 | "eslint-plugin-turbo": "^2.5.0", 20 | "globals": "^16.0.0", 21 | "typescript": "^5.8.2", 22 | "typescript-eslint": "^8.29.0" 23 | } 24 | } -------------------------------------------------------------------------------- /01.WeatherApp/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 | "target": "ES2020", 5 | "useDefineForClassFields": true, 6 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 | "module": "ESNext", 8 | "skipLibCheck": true, 9 | 10 | /* Bundler mode */ 11 | "moduleResolution": "bundler", 12 | "allowImportingTsExtensions": true, 13 | "isolatedModules": true, 14 | "moduleDetection": "force", 15 | "noEmit": true, 16 | "jsx": "react-jsx", 17 | 18 | /* Linting */ 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noFallthroughCasesInSwitch": true, 23 | "noUncheckedSideEffectImports": true 24 | }, 25 | "include": ["src"] 26 | } 27 | -------------------------------------------------------------------------------- /02.Calculator/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 | "target": "ES2020", 5 | "useDefineForClassFields": true, 6 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 | "module": "ESNext", 8 | "skipLibCheck": true, 9 | 10 | /* Bundler mode */ 11 | "moduleResolution": "bundler", 12 | "allowImportingTsExtensions": true, 13 | "isolatedModules": true, 14 | "moduleDetection": "force", 15 | "noEmit": true, 16 | "jsx": "react-jsx", 17 | 18 | /* Linting */ 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noFallthroughCasesInSwitch": true, 23 | "noUncheckedSideEffectImports": true 24 | }, 25 | "include": ["src"] 26 | } 27 | -------------------------------------------------------------------------------- /02.Calculator/src/components/History.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { HistoryProps } from "../types"; 3 | 4 | const History: React.FC = ({ history }) => ( 5 |
7 | {history.length === 0 ? ( 8 |

No history yet.

9 | ) : ( 10 |
    11 | {history.map((entry, index) => ( 12 |
  • 13 | {entry} 14 |
  • 15 | ))} 16 |
17 | )} 18 |
19 | ); 20 | 21 | export default History; -------------------------------------------------------------------------------- /06.blog-web/apps/web/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 | "target": "ES2020", 5 | "useDefineForClassFields": true, 6 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 | "module": "ESNext", 8 | "skipLibCheck": true, 9 | 10 | /* Bundler mode */ 11 | "moduleResolution": "bundler", 12 | "allowImportingTsExtensions": true, 13 | "isolatedModules": true, 14 | "moduleDetection": "force", 15 | "noEmit": true, 16 | "jsx": "react-jsx", 17 | 18 | /* Linting */ 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noFallthroughCasesInSwitch": true, 23 | "noUncheckedSideEffectImports": true 24 | }, 25 | "include": ["src"] 26 | } 27 | -------------------------------------------------------------------------------- /07.portfolio/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "alfaarghya.dev", 3 | "version": "0.0.0", 4 | "author": "alfaarghya", 5 | "private": true, 6 | "scripts": { 7 | "dev": "next dev", 8 | "build": "next build", 9 | "start": "next start", 10 | "lint": "next lint" 11 | }, 12 | "dependencies": { 13 | "clsx": "^2.1.1", 14 | "framer-motion": "^11.9.0", 15 | "gsap": "^3.12.5", 16 | "next": "^14.2.13", 17 | "react": "^18", 18 | "react-dom": "^18", 19 | "tailwind-merge": "^2.5.2" 20 | }, 21 | "devDependencies": { 22 | "@types/node": "^20", 23 | "@types/react": "^18", 24 | "@types/react-dom": "^18", 25 | "eslint": "^8", 26 | "eslint-config-next": "14.2.7", 27 | "postcss": "^8", 28 | "tailwindcss": "^3.4.1", 29 | "typescript": "^5" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /04.chat-app/packages/utils/src/encryption.ts: -------------------------------------------------------------------------------- 1 | import crypto from "crypto"; 2 | 3 | // eslint-disable-next-line turbo/no-undeclared-env-vars 4 | const SECRET_KEY = process.env.SECRET_KEY || "default_secret"; 5 | 6 | export const encryptMessage = (message: string): string => { 7 | const cipher = crypto.createCipheriv("aes-256-cbc", SECRET_KEY, crypto.randomBytes(16)); 8 | let encrypted = cipher.update(message, "utf8", "hex"); 9 | encrypted += cipher.final("hex"); 10 | return encrypted; 11 | }; 12 | 13 | export const decryptMessage = (encryptedMessage: string): string => { 14 | const decipher = crypto.createDecipheriv("aes-256-cbc", SECRET_KEY, crypto.randomBytes(16)); 15 | let decrypted = decipher.update(encryptedMessage, "hex", "utf8"); 16 | decrypted += decipher.final("utf8"); 17 | return decrypted; 18 | }; 19 | -------------------------------------------------------------------------------- /03.tic-tac-toe/packages/eslint-config/base.js: -------------------------------------------------------------------------------- 1 | import js from "@eslint/js"; 2 | import eslintConfigPrettier from "eslint-config-prettier"; 3 | import turboPlugin from "eslint-plugin-turbo"; 4 | import tseslint from "typescript-eslint"; 5 | import onlyWarn from "eslint-plugin-only-warn"; 6 | 7 | /** 8 | * A shared ESLint configuration for the repository. 9 | * 10 | * @type {import("eslint").Linter.Config} 11 | * */ 12 | export const config = [ 13 | js.configs.recommended, 14 | eslintConfigPrettier, 15 | ...tseslint.configs.recommended, 16 | { 17 | plugins: { 18 | turbo: turboPlugin, 19 | }, 20 | rules: { 21 | "turbo/no-undeclared-env-vars": "warn", 22 | }, 23 | }, 24 | { 25 | plugins: { 26 | onlyWarn, 27 | }, 28 | }, 29 | { 30 | ignores: ["dist/**"], 31 | }, 32 | ]; 33 | -------------------------------------------------------------------------------- /04.chat-app/packages/eslint-config/base.js: -------------------------------------------------------------------------------- 1 | import js from "@eslint/js"; 2 | import eslintConfigPrettier from "eslint-config-prettier"; 3 | import turboPlugin from "eslint-plugin-turbo"; 4 | import tseslint from "typescript-eslint"; 5 | import onlyWarn from "eslint-plugin-only-warn"; 6 | 7 | /** 8 | * A shared ESLint configuration for the repository. 9 | * 10 | * @type {import("eslint").Linter.Config[]} 11 | * */ 12 | export const config = [ 13 | js.configs.recommended, 14 | eslintConfigPrettier, 15 | ...tseslint.configs.recommended, 16 | { 17 | plugins: { 18 | turbo: turboPlugin, 19 | }, 20 | rules: { 21 | "turbo/no-undeclared-env-vars": "warn", 22 | }, 23 | }, 24 | { 25 | plugins: { 26 | onlyWarn, 27 | }, 28 | }, 29 | { 30 | ignores: ["dist/**"], 31 | }, 32 | ]; 33 | -------------------------------------------------------------------------------- /06.blog-web/packages/eslint-config/base.js: -------------------------------------------------------------------------------- 1 | import js from "@eslint/js"; 2 | import eslintConfigPrettier from "eslint-config-prettier"; 3 | import turboPlugin from "eslint-plugin-turbo"; 4 | import tseslint from "typescript-eslint"; 5 | import onlyWarn from "eslint-plugin-only-warn"; 6 | 7 | /** 8 | * A shared ESLint configuration for the repository. 9 | * 10 | * @type {import("eslint").Linter.Config[]} 11 | * */ 12 | export const config = [ 13 | js.configs.recommended, 14 | eslintConfigPrettier, 15 | ...tseslint.configs.recommended, 16 | { 17 | plugins: { 18 | turbo: turboPlugin, 19 | }, 20 | rules: { 21 | "turbo/no-undeclared-env-vars": "warn", 22 | }, 23 | }, 24 | { 25 | plugins: { 26 | onlyWarn, 27 | }, 28 | }, 29 | { 30 | ignores: ["dist/**"], 31 | }, 32 | ]; 33 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/eslint-config/base.js: -------------------------------------------------------------------------------- 1 | import js from "@eslint/js"; 2 | import eslintConfigPrettier from "eslint-config-prettier"; 3 | import turboPlugin from "eslint-plugin-turbo"; 4 | import tseslint from "typescript-eslint"; 5 | import onlyWarn from "eslint-plugin-only-warn"; 6 | 7 | /** 8 | * A shared ESLint configuration for the repository. 9 | * 10 | * @type {import("eslint").Linter.Config[]} 11 | * */ 12 | export const config = [ 13 | js.configs.recommended, 14 | eslintConfigPrettier, 15 | ...tseslint.configs.recommended, 16 | { 17 | plugins: { 18 | turbo: turboPlugin, 19 | }, 20 | rules: { 21 | "turbo/no-undeclared-env-vars": "warn", 22 | }, 23 | }, 24 | { 25 | plugins: { 26 | onlyWarn, 27 | }, 28 | }, 29 | { 30 | ignores: ["dist/**"], 31 | }, 32 | ]; 33 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/components/LabelledInput.tsx: -------------------------------------------------------------------------------- 1 | import { LabelledInputType } from "@blog-web/types/client"; 2 | 3 | const LabelledInput = ({ 4 | type, 5 | label, 6 | placeholder, 7 | onChange, 8 | }: LabelledInputType) => { 9 | return ( 10 | <> 11 |
12 | 15 | 22 |
23 | 24 | ); 25 | }; 26 | 27 | export default LabelledInput; 28 | -------------------------------------------------------------------------------- /07.portfolio/public/dockSvg/terminal-dock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /07.portfolio/src/components/ui/Dock.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import React from "react"; 3 | import DockElement from "@/components/elements/dock/DockElement"; 4 | import { motion } from "framer-motion"; 5 | import { dockItems } from "@/stores/dockStore"; 6 | 7 | const Dock = () => { 8 | return ( 9 | 21 | 26 | 27 | ); 28 | }; 29 | 30 | export default Dock; 31 | -------------------------------------------------------------------------------- /06.blog-web/packages/types/src/server/validators/auth.validator.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | //signup validator 4 | export const SignupSchema = z.object({ 5 | name: z.string().nonempty("name can't be empty"), 6 | email: z.string().email("Invalid email address").nonempty("email can't be empty"), 7 | username: z.string().max(25, "username must be 25 or fewer characters long").nonempty("username can't be empty"), 8 | password: z.string().min(8, "password must be at least 8 characters long").nonempty("password can't be empty"), 9 | }); 10 | 11 | //signin validator 12 | export const SigninSchema = z.object({ 13 | username: z.string().max(25, "username must be 25 or fewer characters long").nonempty("username can't be empty"), 14 | password: z.string().min(8, "password must be at least 8 characters long").nonempty("password can't be empty"), 15 | }); 16 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/statusCode/response.ts: -------------------------------------------------------------------------------- 1 | export enum Status { 2 | Success = 200, 3 | NoContent = 204, 4 | Unauthorized = 401, 5 | Forbidden = 403, 6 | NotFound = 404, 7 | RequestTimeout = 408, 8 | Conflict = 409, 9 | InvalidInput = 411, 10 | InternalServerError = 500, 11 | BadGateway = 502, 12 | } 13 | 14 | export const StatusMessages: Record = { 15 | [Status.Success]: "Request successful", 16 | [Status.NoContent]: "No Content", 17 | [Status.Unauthorized]: "Unauthorized access", 18 | [Status.Forbidden]: "Access forbidden", 19 | [Status.NotFound]: "Resource not found", 20 | [Status.RequestTimeout]: "Request timed out", 21 | [Status.Conflict]: "Conflict in request", 22 | [Status.InvalidInput]: "Invalid input", 23 | [Status.InternalServerError]: "Internal server error", 24 | [Status.BadGateway]: "Bad gateway", 25 | }; -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/statusCode/response.ts: -------------------------------------------------------------------------------- 1 | export enum Status { 2 | Success = 200, 3 | NoContent = 204, 4 | Unauthorized = 401, 5 | Forbidden = 403, 6 | NotFound = 404, 7 | RequestTimeout = 408, 8 | Conflict = 409, 9 | InvalidInput = 411, 10 | InternalServerError = 500, 11 | BadGateway = 502, 12 | } 13 | 14 | export const StatusMessages: Record = { 15 | [Status.Success]: "Request successful", 16 | [Status.NoContent]: "No Content", 17 | [Status.Unauthorized]: "Unauthorized access", 18 | [Status.Forbidden]: "Access forbidden", 19 | [Status.NotFound]: "Resource not found", 20 | [Status.RequestTimeout]: "Request timed out", 21 | [Status.Conflict]: "Conflict in request", 22 | [Status.InvalidInput]: "Invalid input", 23 | [Status.InternalServerError]: "Internal server error", 24 | [Status.BadGateway]: "Bad gateway", 25 | }; -------------------------------------------------------------------------------- /01.WeatherApp/eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import globals from 'globals' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import reactRefresh from 'eslint-plugin-react-refresh' 5 | import tseslint from 'typescript-eslint' 6 | 7 | export default tseslint.config( 8 | { ignores: ['dist'] }, 9 | { 10 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 | files: ['**/*.{ts,tsx}'], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser, 15 | }, 16 | plugins: { 17 | 'react-hooks': reactHooks, 18 | 'react-refresh': reactRefresh, 19 | }, 20 | rules: { 21 | ...reactHooks.configs.recommended.rules, 22 | 'react-refresh/only-export-components': [ 23 | 'warn', 24 | { allowConstantExport: true }, 25 | ], 26 | }, 27 | }, 28 | ) 29 | -------------------------------------------------------------------------------- /02.Calculator/eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import globals from 'globals' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import reactRefresh from 'eslint-plugin-react-refresh' 5 | import tseslint from 'typescript-eslint' 6 | 7 | export default tseslint.config( 8 | { ignores: ['dist'] }, 9 | { 10 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 | files: ['**/*.{ts,tsx}'], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser, 15 | }, 16 | plugins: { 17 | 'react-hooks': reactHooks, 18 | 'react-refresh': reactRefresh, 19 | }, 20 | rules: { 21 | ...reactHooks.configs.recommended.rules, 22 | 'react-refresh/only-export-components': [ 23 | 'warn', 24 | { allowConstantExport: true }, 25 | ], 26 | }, 27 | }, 28 | ) 29 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "nodemon --exec ts-node src/index.ts", 8 | "build": "tsc -b", 9 | "start": "node dist/index.js", 10 | "lint": "eslint . --max-warnings 0", 11 | "check-types": "tsc --noEmit" 12 | }, 13 | "dependencies": { 14 | "@types/cors": "^2.8.17", 15 | "@types/express": "^5.0.0", 16 | "cors": "^2.8.5", 17 | "dotenv": "^16.4.7", 18 | "express": "^4.21.2", 19 | "nodemon": "^3.1.9", 20 | "socket.io": "^4.8.1", 21 | "ts-node": "^10.9.2" 22 | }, 23 | "devDependencies": { 24 | "@tic-tac-toe/eslint-config": "*", 25 | "@tic-tac-toe/typescript-config": "*", 26 | "@types/node": "^22", 27 | "eslint": "^9.20.0", 28 | "typescript": "5.7.3" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/src/context/UserContext.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { createContext, useContext, useEffect, useState } from 'react'; 4 | 5 | type UserContextType = { 6 | name: string; 7 | setName: (name: string) => void; 8 | }; 9 | 10 | const UserContext = createContext({ 11 | name: '', 12 | setName: () => { }, 13 | }); 14 | 15 | export const UserProvider = ({ children }: { children: React.ReactNode }) => { 16 | const [name, setName] = useState(''); 17 | 18 | useEffect(() => { 19 | const storedName = localStorage.getItem('name') || ''; 20 | setName(storedName); 21 | }, []); 22 | 23 | return ( 24 | 25 | {children} 26 | 27 | ); 28 | }; 29 | 30 | export const useUser = () => useContext(UserContext); 31 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import globals from 'globals' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import reactRefresh from 'eslint-plugin-react-refresh' 5 | import tseslint from 'typescript-eslint' 6 | 7 | export default tseslint.config( 8 | { ignores: ['dist'] }, 9 | { 10 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 | files: ['**/*.{ts,tsx}'], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser, 15 | }, 16 | plugins: { 17 | 'react-hooks': reactHooks, 18 | 'react-refresh': reactRefresh, 19 | }, 20 | rules: { 21 | ...reactHooks.configs.recommended.rules, 22 | 'react-refresh/only-export-components': [ 23 | 'warn', 24 | { allowConstantExport: true }, 25 | ], 26 | }, 27 | }, 28 | ) 29 | -------------------------------------------------------------------------------- /07.portfolio/public/dockSvg/email-circle-fill-svgrepo-com.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/statusCode/response.ts: -------------------------------------------------------------------------------- 1 | export enum Status { 2 | Success = 200, 3 | NoContent = 204, 4 | Unauthorized = 401, 5 | Forbidden = 403, 6 | NotFound = 404, 7 | RequestTimeout = 408, 8 | Conflict = 409, 9 | InvalidInput = 411, 10 | InternalServerError = 500, 11 | BadGateway = 502, 12 | } 13 | 14 | export const StatusMessages: Record = { 15 | [Status.Success]: "Request successful", 16 | [Status.NoContent]: "No Content", 17 | [Status.Unauthorized]: "Unauthorized access", 18 | [Status.Forbidden]: "Access forbidden", 19 | [Status.NotFound]: "Resource not found", 20 | [Status.RequestTimeout]: "Request timed out", 21 | [Status.Conflict]: "Conflict in request", 22 | [Status.InvalidInput]: "Invalid input", 23 | [Status.InternalServerError]: "Internal server error", 24 | [Status.BadGateway]: "Bad gateway", 25 | }; -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/pages/Blogs.tsx: -------------------------------------------------------------------------------- 1 | import Appbar from "../components/Appbar"; 2 | import BlogCard from "../components/BlogCard"; 3 | import { useBlogs } from "../hooks"; 4 | 5 | const Blog = () => { 6 | const { loading, blogs } = useBlogs(); //retrieve blogs using custom hook 7 | 8 | // can't load the blogs 9 | if (loading) { 10 | return
Loading . . . .
; 11 | } 12 | 13 | //load the blog 14 | return ( 15 |
16 | 17 |
18 | {blogs.map((blog) => ( 19 | 25 | ))} 26 |
27 |
28 | ); 29 | }; 30 | 31 | export default Blog; 32 | -------------------------------------------------------------------------------- /06.blog-web/packages/types/src/server/validators/blog.validator.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | //create blog validator 4 | export const CreateBlogSchema = z.object({ 5 | userId: z.string().uuid("uuid required").nonempty("userId can't be empty"), 6 | title: z.string().nonempty("Title can't be empty"), 7 | content: z.string().nonempty("content can't be empty"), 8 | }); 9 | 10 | //update a blog validator 11 | export const UpdateBlogSchema = z.object({ 12 | id: z.string().uuid("uuid required").nonempty("id can't be empty"), 13 | userId: z.string().uuid("uuid required").nonempty("userId can't be empty"), 14 | title: z.string().optional(), 15 | content: z.string().optional(), 16 | }); 17 | 18 | //delete a blog validator 19 | export const DeleteBlogSchema = z.object({ 20 | id: z.string().uuid("uuid required").nonempty("id can't be empty"), 21 | userId: z.string().uuid("uuid required").nonempty("userId can't be empty"), 22 | }); -------------------------------------------------------------------------------- /01.WeatherApp/src/UI/DotsLoading.css: -------------------------------------------------------------------------------- 1 | /* DotsLoading.css */ 2 | .dot { 3 | @apply h-5 w-5 mr-2 rounded-full bg-blue-200; 4 | animation: pulse 1.5s infinite ease-in-out; 5 | } 6 | 7 | .dot:last-child { 8 | @apply mr-0; 9 | } 10 | 11 | .dot:nth-child(1) { 12 | animation-delay: -0.3s; 13 | } 14 | 15 | .dot:nth-child(2) { 16 | animation-delay: -0.1s; 17 | } 18 | 19 | .dot:nth-child(3) { 20 | animation-delay: 0.1s; 21 | } 22 | 23 | @keyframes pulse { 24 | 0% { 25 | transform: scale(0.8); 26 | background-color: #b3d4fc; 27 | box-shadow: 0 0 0 0 rgba(178, 212, 252, 0.7); 28 | } 29 | 30 | 50% { 31 | transform: scale(1.2); 32 | background-color: #6793fb; 33 | box-shadow: 0 0 0 10px rgba(178, 212, 252, 0); 34 | } 35 | 36 | 100% { 37 | transform: scale(0.8); 38 | background-color: #b3d4fc; 39 | box-shadow: 0 0 0 0 rgba(178, 212, 252, 0.7); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/admin/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "admin", 3 | "version": "0.1.0", 4 | "type": "module", 5 | "private": true, 6 | "scripts": { 7 | "dev": "next dev --turbopack --port 3000", 8 | "build": "next build", 9 | "start": "next start", 10 | "lint": "next lint --max-warnings 0", 11 | "check-types": "tsc --noEmit" 12 | }, 13 | "dependencies": { 14 | "@stba/types": "*", 15 | "@stba/utils": "*", 16 | "@stba/ui": "*", 17 | "@tailwindcss/postcss": "^4.0.6", 18 | "next": "^15.2.4", 19 | "react": "^19.1.0", 20 | "react-dom": "^19.1.0", 21 | "tailwindcss": "^4.0.6" 22 | }, 23 | "devDependencies": { 24 | "@stba/eslint-config": "*", 25 | "@stba/typescript-config": "*", 26 | "@types/node": "^22.14.0", 27 | "@types/react": "19.1.0", 28 | "@types/react-dom": "19.1.1", 29 | "eslint": "^9.24.0", 30 | "typescript": "5.8.2" 31 | } 32 | } -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/routes/teacher.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import authenticate from "../middleware/authenticate"; 3 | import { authorizeTeacher } from "../middleware/authorize"; 4 | import { getAppointments, getMessages, sendMessage, updateAppointmentStatus } from "../controller/teacher.controller"; 5 | 6 | const router = Router(); 7 | 8 | // Get appointments for a teacher based on status 9 | router.get("/appointment/:status", [authenticate, authorizeTeacher], getAppointments); 10 | 11 | //APPROVED/CANCELLED student appointment request 12 | router.put("/appointment/:id", [authenticate, authorizeTeacher], updateAppointmentStatus); 13 | 14 | //Send message by teacher 15 | router.post("/messages/:id", [authenticate, authorizeTeacher], sendMessage); 16 | 17 | //Send message by teacher 18 | router.get("/messages/:id", [authenticate, authorizeTeacher], getMessages); 19 | 20 | export default router; -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/student/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "student", 3 | "version": "0.1.0", 4 | "type": "module", 5 | "private": true, 6 | "scripts": { 7 | "dev": "next dev --turbopack --port 3002", 8 | "build": "next build", 9 | "start": "next start", 10 | "lint": "next lint --max-warnings 0", 11 | "check-types": "tsc --noEmit" 12 | }, 13 | "dependencies": { 14 | "@stba/types": "*", 15 | "@stba/utils": "*", 16 | "@stba/ui": "*", 17 | "@tailwindcss/postcss": "^4.0.6", 18 | "next": "^15.2.4", 19 | "react": "^19.1.0", 20 | "react-dom": "^19.1.0", 21 | "tailwindcss": "^4.0.6" 22 | }, 23 | "devDependencies": { 24 | "@stba/eslint-config": "*", 25 | "@stba/typescript-config": "*", 26 | "@types/node": "^22.14.0", 27 | "@types/react": "19.1.0", 28 | "@types/react-dom": "19.1.1", 29 | "eslint": "^9.24.0", 30 | "typescript": "5.8.2" 31 | } 32 | } -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/teacher/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "teacher", 3 | "version": "0.1.0", 4 | "type": "module", 5 | "private": true, 6 | "scripts": { 7 | "dev": "next dev --turbopack --port 3001", 8 | "build": "next build", 9 | "start": "next start", 10 | "lint": "next lint --max-warnings 0", 11 | "check-types": "tsc --noEmit" 12 | }, 13 | "dependencies": { 14 | "@stba/types": "*", 15 | "@stba/utils": "*", 16 | "@stba/ui": "*", 17 | "@tailwindcss/postcss": "^4.0.6", 18 | "next": "^15.2.4", 19 | "react": "^19.1.0", 20 | "react-dom": "^19.1.0", 21 | "tailwindcss": "^4.0.6" 22 | }, 23 | "devDependencies": { 24 | "@stba/eslint-config": "*", 25 | "@stba/typescript-config": "*", 26 | "@types/node": "^22.14.0", 27 | "@types/react": "19.1.0", 28 | "@types/react-dom": "19.1.1", 29 | "eslint": "^9.24.0", 30 | "typescript": "5.8.2" 31 | } 32 | } -------------------------------------------------------------------------------- /02.Calculator/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "calculator", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc -b && vite build", 9 | "lint": "eslint .", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@tailwindcss/vite": "^4.0.7", 14 | "mathjs": "^14.2.1", 15 | "react": "^19.0.0", 16 | "react-dom": "^19.0.0", 17 | "remixicon": "^4.6.0", 18 | "tailwindcss": "^4.0.7" 19 | }, 20 | "devDependencies": { 21 | "@eslint/js": "^9.19.0", 22 | "@types/react": "^19.0.8", 23 | "@types/react-dom": "^19.0.3", 24 | "@vitejs/plugin-react": "^4.3.4", 25 | "eslint": "^9.19.0", 26 | "eslint-plugin-react-hooks": "^5.0.0", 27 | "eslint-plugin-react-refresh": "^0.4.18", 28 | "globals": "^15.14.0", 29 | "typescript": "~5.7.2", 30 | "typescript-eslint": "^8.22.0", 31 | "vite": "^6.1.0" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /07.portfolio/src/components/elements/skill/cards/CardType2.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Circle } from "../Circle"; 3 | import Image from "next/image"; 4 | 5 | const CardType2 = () => { 6 | return ( 7 |
8 |
9 |
10 | complete-site 16 |
17 |

Complete Site

18 |
19 |
20 | ); 21 | }; 22 | 23 | export default CardType2; 24 | -------------------------------------------------------------------------------- /03.tic-tac-toe/apps/tic-tac-toe/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tic-tac-toe-game", 3 | "version": "0.1.0", 4 | "type": "module", 5 | "private": true, 6 | "scripts": { 7 | "dev": "next dev --turbopack --port 3000", 8 | "build": "next build", 9 | "start": "next start", 10 | "lint": "next lint --max-warnings 0", 11 | "check-types": "tsc --noEmit" 12 | }, 13 | "dependencies": { 14 | "next": "^15.1.6", 15 | "react": "^19.0.0", 16 | "react-dom": "^19.0.0", 17 | "@tailwindcss/postcss": "^4.0.6", 18 | "postcss": "^8.5.2", 19 | "tailwindcss": "^4.0.6", 20 | "socket.io": "^4.8.1", 21 | "socket.io-client": "^4.8.1" 22 | }, 23 | "devDependencies": { 24 | "@tic-tac-toe/eslint-config": "*", 25 | "@tic-tac-toe/typescript-config": "*", 26 | "@types/node": "^22", 27 | "@types/react": "19.0.8", 28 | "@types/react-dom": "19.0.3", 29 | "eslint": "^9.21.0", 30 | "typescript": "5.7.3" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /07.portfolio/src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Syne } from "next/font/google"; 3 | import "./globals.css"; 4 | 5 | const syne = Syne({ 6 | subsets: ["latin"], 7 | weight: ["400", "500", "600", "700", "800"], 8 | }); 9 | 10 | export const metadata: Metadata = { 11 | title: "alfaarghya.dev - Shape Ideas with Technology", 12 | description: 13 | "A personal portfolio created by Arghya Das (alfaarghya), a full-stack software developer, focused on crafting meaningful web applications with creativity and technical expertise, turning intricate ideas into real-world digital solutions, one line of code at a time", 14 | }; 15 | 16 | export default function RootLayout({ 17 | children, 18 | }: Readonly<{ 19 | children: React.ReactNode; 20 | }>) { 21 | return ( 22 | 23 | 24 | {children} 25 | 26 | 27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc -b && vite build", 9 | "lint": "eslint .", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@tailwindcss/vite": "^4.1.4", 14 | "axios": "^1.8.4", 15 | "react": "^19.0.0", 16 | "react-dom": "^19.0.0", 17 | "react-router-dom": "^7.5.1", 18 | "tailwindcss": "^4.1.4" 19 | }, 20 | "devDependencies": { 21 | "@blog-web/types": "*", 22 | "@eslint/js": "^9.22.0", 23 | "@types/react": "^19.0.10", 24 | "@types/react-dom": "^19.0.4", 25 | "@vitejs/plugin-react": "^4.3.4", 26 | "eslint": "^9.22.0", 27 | "eslint-plugin-react-hooks": "^5.2.0", 28 | "eslint-plugin-react-refresh": "^0.4.19", 29 | "globals": "^16.0.0", 30 | "typescript": "~5.7.2", 31 | "typescript-eslint": "^8.26.1", 32 | "vite": "^6.3.1" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /04.chat-app/apps/server/src/routes/chat.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import authenticate from "../middleware/authenticate"; 3 | import { createRoom, deleteRoom, getMessages, getRoomDetails, getUserChats, joinRoom, updateRoom } from "../controller/chatController"; 4 | 5 | 6 | const router = Router(); 7 | 8 | //get the list of rooms and inboxes 9 | router.get("/lists", authenticate, getUserChats); 10 | 11 | //get the message history of a room or inbox 12 | router.get("/:chatId", authenticate, getMessages); 13 | 14 | //create a room 15 | router.post("/room", authenticate, createRoom); 16 | 17 | //get the list of people in the room 18 | router.get("/room/:roomId", authenticate, getRoomDetails); 19 | 20 | //join a room 21 | router.put("/room/join-room", authenticate, joinRoom); 22 | 23 | //update room -> rename or kick user 24 | router.put("/room/:roomId", authenticate, updateRoom); 25 | 26 | //delete a room 27 | router.delete("/room/:roomId", authenticate, deleteRoom); 28 | 29 | export default router; 30 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/src/client/Types.ts: -------------------------------------------------------------------------------- 1 | import { AppointmentStatus, Status } from "./enum"; 2 | 3 | export type Student = { 4 | id: string; 5 | name: string; 6 | email: string; 7 | status: Status 8 | }; 9 | 10 | export interface Appointment { 11 | id: string; 12 | teacherId: string; 13 | status: AppointmentStatus; 14 | date: Date; 15 | studentId: string; 16 | student: { 17 | id: string; 18 | name: string; 19 | email: string; 20 | }; 21 | } 22 | 23 | export interface Message { 24 | id: string; 25 | createdAt: string; 26 | content: string; 27 | senderId: string; 28 | receiverId: string; 29 | } 30 | 31 | export interface Teacher { 32 | id: string; 33 | name: string; 34 | email: string; 35 | subject: string | null; 36 | department: string | null; 37 | } 38 | 39 | export interface StudentAppointment { 40 | id: string; 41 | teacherId: string; 42 | studentId: string; 43 | status: AppointmentStatus; 44 | date: string; 45 | teacher: Teacher; 46 | }; -------------------------------------------------------------------------------- /07.portfolio/src/types/skillType.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode, RefObject } from "react"; 2 | 3 | export type card1Type = { 4 | title: string; 5 | icon: string; 6 | }; 7 | 8 | export interface CardRevealProps { 9 | children: ReactNode; // Accept children instead of cards 10 | className?: string; 11 | } 12 | 13 | export interface CardProps { 14 | children: ReactNode; 15 | progress: any; 16 | range: [number, number]; 17 | index: number; 18 | } 19 | 20 | export interface AnimatedBeamProps { 21 | className?: string; 22 | containerRef: RefObject; // Container ref 23 | fromRef: RefObject; 24 | toRef: RefObject; 25 | curvature?: number; 26 | reverse?: boolean; 27 | pathColor?: string; 28 | pathWidth?: number; 29 | pathOpacity?: number; 30 | gradientStartColor?: string; 31 | gradientStopColor?: string; 32 | delay?: number; 33 | duration?: number; 34 | startXOffset?: number; 35 | startYOffset?: number; 36 | endXOffset?: number; 37 | endYOffset?: number; 38 | } 39 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/App.tsx: -------------------------------------------------------------------------------- 1 | import { BrowserRouter, Route, Routes } from "react-router-dom"; 2 | import Signup from "./pages/Signup"; 3 | import Signin from "./pages/Signin"; 4 | import Blogs from "./pages/Blogs"; 5 | import Blog from "./pages/Blog"; 6 | import CreateBlog from "./pages/CreateBlog"; 7 | import UpdateBlog from "./pages/UpdateBlog"; 8 | 9 | const App = () => { 10 | return ( 11 | <> 12 | 13 | 14 | {/* all routes */} 15 | } /> 16 | } /> 17 | } /> 18 | } /> 19 | } /> 20 | } /> 21 | } /> 22 | 23 | 24 | 25 | ); 26 | }; 27 | 28 | export default App; 29 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/routes/student.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import authenticate from "../middleware/authenticate"; 3 | import { authorizeStudent } from "../middleware/authorize"; 4 | import { bookAppointment, cancelAppointment, getAppointments, getMessages, searchTeachers } from "../controller/student.controller"; 5 | 6 | const router = Router(); 7 | 8 | //search teachers by name/department/subject 9 | router.get("/search", [authenticate, authorizeStudent], searchTeachers); 10 | 11 | //book an appointment with teacher 12 | router.post("/appointment", [authenticate, authorizeStudent], bookAppointment); 13 | 14 | //get all appointments 15 | router.get("/appointment", [authenticate, authorizeStudent], getAppointments); 16 | 17 | //cancel an appointment 18 | router.delete("/appointment/:id", [authenticate, authorizeStudent], cancelAppointment); 19 | 20 | //get messages for an appointment 21 | router.get("/messages/:appointmentId", [authenticate, authorizeStudent], getMessages); 22 | 23 | export default router; -------------------------------------------------------------------------------- /07.portfolio/public/dockSvg/dock-menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /07.portfolio/public/dockSvg/linkedin-dock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/turbo/generators/config.ts: -------------------------------------------------------------------------------- 1 | import type { PlopTypes } from "@turbo/gen"; 2 | 3 | // Learn more about Turborepo Generators at https://turbo.build/docs/core-concepts/monorepos/code-generation 4 | 5 | export default function generator(plop: PlopTypes.NodePlopAPI): void { 6 | // A simple generator to add a new React component to the internal UI library 7 | plop.setGenerator("react-component", { 8 | description: "Adds a new react component", 9 | prompts: [ 10 | { 11 | type: "input", 12 | name: "name", 13 | message: "What is the name of the component?", 14 | }, 15 | ], 16 | actions: [ 17 | { 18 | type: "add", 19 | path: "src/{{kebabCase name}}.tsx", 20 | templateFile: "templates/component.hbs", 21 | }, 22 | { 23 | type: "append", 24 | path: "package.json", 25 | pattern: /"exports": {(?)/g, 26 | template: ' "./{{kebabCase name}}": "./src/{{kebabCase name}}.tsx",', 27 | }, 28 | ], 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/hooks/useUsername.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | 3 | export const useUsername = () => { 4 | const [username, setUsername] = useState(null); 5 | 6 | useEffect(() => { 7 | const stored = localStorage.getItem("username"); 8 | setUsername(stored); 9 | 10 | const interval = setInterval(() => { 11 | const current = localStorage.getItem("username"); 12 | if (current !== username) setUsername(current); 13 | }, 400); // small interval to check for changes in same tab 14 | 15 | return () => clearInterval(interval); 16 | }, [username]); 17 | 18 | const login = (name: string, userId: string) => { 19 | localStorage.setItem("username", name); 20 | localStorage.setItem("userId", userId); 21 | setUsername(name); 22 | }; 23 | 24 | const logout = () => { 25 | localStorage.removeItem("username"); 26 | localStorage.removeItem("userId"); 27 | setUsername(null); 28 | document.cookie = "token=; Max-Age=0; path=/"; 29 | }; 30 | 31 | return { username, login, logout }; 32 | }; 33 | -------------------------------------------------------------------------------- /07.portfolio/public/svg/back-mongodb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /01.WeatherApp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "weather-app", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc -b && vite build", 9 | "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@types/axios": "^0.14.0", 14 | "axios": "^1.7.2", 15 | "dotenv": "^16.4.5", 16 | "react": "^18.3.1", 17 | "react-dom": "^18.3.1", 18 | "remixicon": "^4.3.0" 19 | }, 20 | "devDependencies": { 21 | "@types/react": "^18.3.3", 22 | "@types/react-dom": "^18.3.0", 23 | "@typescript-eslint/eslint-plugin": "^7.13.1", 24 | "@typescript-eslint/parser": "^7.13.1", 25 | "@vitejs/plugin-react": "^4.3.1", 26 | "autoprefixer": "^10.4.19", 27 | "eslint": "^8.57.0", 28 | "eslint-plugin-react-hooks": "^4.6.2", 29 | "eslint-plugin-react-refresh": "^0.4.7", 30 | "postcss": "^8.4.39", 31 | "tailwindcss": "^3.4.4", 32 | "typescript": "^5.2.2", 33 | "vite": "^5.3.1" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/pages/Blog.tsx: -------------------------------------------------------------------------------- 1 | import { useParams } from "react-router-dom"; 2 | import Appbar from "../components/Appbar"; 3 | import { useBlog } from "../hooks"; 4 | import BlogRead from "../components/BlogRead"; 5 | 6 | const Blog = () => { 7 | const { id } = useParams(); //blog id from URL params 8 | const { loading, blog } = useBlog({ id: id || "" }); //retrieve blog using custom hook 9 | console.log(blog); 10 | 11 | 12 | // can't load the blog 13 | if (loading) { 14 | return
Loading . . . .
; 15 | } 16 | 17 | //load the blog 18 | if (!blog) { 19 | return
Blog not found
; 20 | } 21 | 22 | return ( 23 |
24 | 25 |
26 | 33 |
34 |
35 | ); 36 | }; 37 | 38 | export default Blog; 39 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/src/routes/admin.route.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import authenticate from "../middleware/authenticate"; 3 | import { authorizeAdmin } from "../middleware/authorize"; 4 | import { addTeacher, removeTeacher, getStudents, getTeachers, updateStudentStatus, updateTeacher } from "../controller/admin.controller"; 5 | 6 | const router = Router(); 7 | 8 | //add teacher 9 | router.post("/teacher", [authenticate, authorizeAdmin], addTeacher); 10 | 11 | //get teachers 12 | router.get("/teacher", [authenticate, authorizeAdmin], getTeachers); 13 | 14 | //update teacher 15 | router.put("/teacher/:teacherId", [authenticate, authorizeAdmin], updateTeacher); 16 | 17 | //remove teacher 18 | router.delete("/teacher/:teacherId", [authenticate, authorizeAdmin], removeTeacher); 19 | 20 | 21 | 22 | // Approve / Cancel student 23 | router.put("/student/register/:studentId", [authenticate, authorizeAdmin], updateStudentStatus) 24 | 25 | // get all students 26 | router.get("/student/:status", [authenticate, authorizeAdmin], getStudents); 27 | 28 | 29 | export default router; -------------------------------------------------------------------------------- /06.blog-web/apps/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.1.0", 4 | "description": "a server for stba", 5 | "main": "index.js", 6 | "license": "MIT", 7 | "scripts": { 8 | "dev": "nodemon --exec ts-node src/index.ts", 9 | "build": "tsc -b", 10 | "start": "node dist/index.js", 11 | "lint": "eslint . --max-warnings 0", 12 | "check-types": "tsc --noEmit" 13 | }, 14 | "dependencies": { 15 | "@blog-web/db": "*", 16 | "@blog-web/types": "*", 17 | "@types/cookie-parser": "^1.4.8", 18 | "@types/cors": "^2.8.17", 19 | "@types/express": "^5.0.0", 20 | "@types/jsonwebtoken": "^9.0.9", 21 | "bcryptjs": "^3.0.2", 22 | "cookie-parser": "^1.4.7", 23 | "cors": "^2.8.5", 24 | "dotenv": "^16.4.7", 25 | "express": "^4.21.2", 26 | "jsonwebtoken": "^9.0.2", 27 | "nodemon": "^3.1.9", 28 | "ts-node": "^10.9.2" 29 | }, 30 | "devDependencies": { 31 | "@blog-web/eslint-config": "*", 32 | "@blog-web/typescript-config": "*", 33 | "@types/node": "^22", 34 | "eslint": "^9.20.0", 35 | "typescript": "5.7.3" 36 | } 37 | } -------------------------------------------------------------------------------- /04.chat-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "04.chat-app", 3 | "private": true, 4 | "scripts": { 5 | "build": "turbo run build", 6 | "dev": "turbo run dev", 7 | "db:migrate": "cd packages/db && yarn prisma migrate dev && cd ../..", 8 | "db:generate": "cd packages/db && yarn prisma generate && cd ../..", 9 | "db:seed": "cd packages/db && yarn prisma db seed && cd ../..", 10 | "db:show": "cd packages/db && yarn prisma studio && cd ../..", 11 | "lint": "turbo run lint", 12 | "format": "prettier --write \"**/*.{ts,tsx,md}\"", 13 | "check-types": "turbo run check-types" 14 | }, 15 | "devDependencies": { 16 | "prettier": "^3.5.3", 17 | "turbo": "^2.4.4", 18 | "typescript": "5.8.2" 19 | }, 20 | "lint-staged": { 21 | "*.{ts,tsx,js,jsx}": "eslint --fix", 22 | "*.{json,md,css,scss}": "prettier --write" 23 | }, 24 | "engines": { 25 | "node": ">=18" 26 | }, 27 | "packageManager": "yarn@1.22.22", 28 | "workspaces": [ 29 | "apps/*", 30 | "packages/*" 31 | ], 32 | "dependencies": { 33 | "eslint": "^9.20.1", 34 | "lint-staged": "^15.4.3" 35 | } 36 | } -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/apps/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.1.0", 4 | "description": "a server for stba", 5 | "main": "index.js", 6 | "license": "MIT", 7 | "scripts": { 8 | "dev": "nodemon --exec ts-node src/index.ts", 9 | "build": "tsc -b", 10 | "start": "node dist/index.js", 11 | "lint": "eslint . --max-warnings 0", 12 | "check-types": "tsc --noEmit" 13 | }, 14 | "dependencies": { 15 | "@stba/db": "*", 16 | "@stba/types": "*", 17 | "@types/cookie-parser": "^1.4.8", 18 | "@types/cors": "^2.8.17", 19 | "@types/express": "^5.0.0", 20 | "@types/jsonwebtoken": "^9.0.9", 21 | "bcryptjs": "^3.0.2", 22 | "cookie-parser": "^1.4.7", 23 | "cors": "^2.8.5", 24 | "dotenv": "^16.4.7", 25 | "express": "^4.21.2", 26 | "jsonwebtoken": "^9.0.2", 27 | "nodemon": "^3.1.9", 28 | "ts-node": "^10.9.2" 29 | }, 30 | "devDependencies": { 31 | "@stba/eslint-config": "*", 32 | "@stba/typescript-config": "*", 33 | "@types/node": "^22", 34 | "eslint": "^9.20.0", 35 | "typescript": "5.7.3" 36 | } 37 | } -------------------------------------------------------------------------------- /06.blog-web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "06.blog-web", 3 | "private": true, 4 | "scripts": { 5 | "build": "turbo run build", 6 | "dev": "turbo run dev", 7 | "db:migrate": "cd packages/db && yarn prisma migrate dev && cd ../..", 8 | "db:generate": "cd packages/db && yarn prisma generate && cd ../..", 9 | "db:seed": "cd packages/db && yarn prisma db seed && cd ../..", 10 | "db:show": "cd packages/db && yarn prisma studio && cd ../..", 11 | "lint": "turbo run lint", 12 | "format": "prettier --write \"**/*.{ts,tsx,md}\"", 13 | "check-types": "turbo run check-types" 14 | }, 15 | "devDependencies": { 16 | "prettier": "^3.5.3", 17 | "turbo": "^2.5.0", 18 | "typescript": "5.8.2" 19 | }, 20 | "lint-staged": { 21 | "*.{ts,tsx,js,jsx}": "eslint --fix", 22 | "*.{json,md,css,scss}": "prettier --write" 23 | }, 24 | "engines": { 25 | "node": ">=18" 26 | }, 27 | "packageManager": "yarn@1.22.22", 28 | "workspaces": [ 29 | "apps/*", 30 | "packages/*" 31 | ], 32 | "dependencies": { 33 | "eslint": "^9.20.1", 34 | "lint-staged": "^15.4.3" 35 | } 36 | } -------------------------------------------------------------------------------- /07.portfolio/public/dockSvg/mail-5-svgrepo-com.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /07.portfolio/src/components/elements/project/Project.tsx: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | import { ProjectProps } from "@/types/projectType"; 3 | 4 | const Project = ({ 5 | index, 6 | title, 7 | description, 8 | setModal, 9 | link, 10 | }: ProjectProps) => { 11 | return ( 12 |
setModal({ active: true, index })} 15 | onMouseLeave={() => setModal({ active: false, index })} 16 | > 17 | 18 |
19 |

20 | {title} 21 |

22 |

23 | {description} 24 |

25 |
26 | 27 |
28 | ); 29 | }; 30 | 31 | export default Project; 32 | -------------------------------------------------------------------------------- /07.portfolio/src/stores/projectStore.ts: -------------------------------------------------------------------------------- 1 | import { project } from "@/types/projectType"; 2 | 3 | export const projects: project[] = [ 4 | { 5 | title: "alfa-leetcode-api", 6 | description: ` A custom LeetCode api to get User info, Problem, Contest & many more`, 7 | src: "/projects/alfa-leetcode-api.png", 8 | color: "#302F30", 9 | link: "https://github.com/alfaarghya/alfa-leetcode-api", 10 | }, 11 | { 12 | title: "blog-web", 13 | description: "A simple blogging application to perform CURD operation", 14 | src: "/projects/blog-web.png", 15 | color: "#9CA3AF", 16 | link: "https://github.com/alfaarghya/blog-web", 17 | }, 18 | { 19 | title: "ReadHub.md", 20 | description: "Generate your own GitHub Profile README.md easily ", 21 | src: "/projects/readhubmd.png", 22 | color: "#D6EAFF", 23 | link: "https://readhubmd.netlify.app/", 24 | }, 25 | { 26 | title: "typing-test", 27 | description: "Improve your typing speed", 28 | src: "/projects/typing-test.png", 29 | color: "#808080", 30 | link: "https://alfa-typing-test.netlify.app/", 31 | }, 32 | ]; 33 | -------------------------------------------------------------------------------- /06.blog-web/packages/db/prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | generator client { 2 | provider = "prisma-client-js" 3 | output = "generated/prisma/client" 4 | } 5 | 6 | datasource db { 7 | provider = "postgresql" 8 | url = env("DATABASE_URL") 9 | } 10 | 11 | model User { 12 | id String @id @default(uuid()) 13 | name String 14 | email String @unique 15 | username String @unique 16 | password String 17 | blogs Blog[] 18 | Comment Comment[] 19 | } 20 | 21 | model Blog { 22 | id String @id @default(uuid()) 23 | authorId String 24 | title String 25 | content String 26 | createdAt DateTime @default(now()) 27 | updatedAt DateTime @updatedAt 28 | author User @relation(fields: [authorId], references: [id]) 29 | Comment Comment[] 30 | } 31 | 32 | model Comment { 33 | id String @id @default(uuid()) 34 | comment String 35 | blogId String 36 | userId String 37 | blog Blog @relation(fields: [blogId], references: [id]) 38 | user User @relation(fields: [userId], references: [id]) 39 | createdAt DateTime @default(now()) 40 | } 41 | -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import localFont from "next/font/local"; 3 | import "./globals.css"; 4 | import Navbar from "../components/navbar"; 5 | import Footer from "../components/footer"; 6 | import { Toaster } from "sonner"; 7 | 8 | const geistSans = localFont({ 9 | src: "./fonts/GeistVF.woff", 10 | variable: "--font-geist-sans", 11 | }); 12 | const geistMono = localFont({ 13 | src: "./fonts/GeistMonoVF.woff", 14 | variable: "--font-geist-mono", 15 | }); 16 | 17 | export const metadata: Metadata = { 18 | title: "Chat App", 19 | description: "Generated by create next app", 20 | }; 21 | 22 | export default function RootLayout({ 23 | children, 24 | }: Readonly<{ 25 | children: React.ReactNode; 26 | }>) { 27 | return ( 28 | 29 | 30 | 31 |
32 | {children} 33 |
34 | 35 | 36 | 37 | ); 38 | } 39 | -------------------------------------------------------------------------------- /07.portfolio/public/dockSvg/cv-dock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/src/server/validator/auth.validator.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | //registration validator for students 4 | export const StudentRegisterSchema = z.object({ 5 | name: z.string().nonempty("Name is required"), 6 | email: z.string().email("Email is required").nonempty("can't leave email empty"), 7 | password: z.string().min(8, "Password need at least 8 char long").nonempty("Password is required"), 8 | }); 9 | 10 | //set password validator for teacher 11 | export const SetPasswordSchema = z.object({ 12 | teacherId: z.string().uuid().nonempty("need teacher id"), 13 | email: z.string().email("Email is required").nonempty("can't leave email empty"), 14 | password: z.string().min(8, "Password need at least 8 char long").nonempty("Password is required"), 15 | }); 16 | 17 | //login validator 18 | export const UserLoginSchema = z.object({ 19 | email: z.string().email("Email is required").nonempty("can't leave email empty"), 20 | password: z.string().min(8, "Password need at least 8 char long").nonempty("Password is required"), 21 | role: z.enum(["STUDENT", "TEACHER", "ADMIN"]) 22 | }); 23 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/ui/src/Hero.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useRouter } from "next/navigation"; 4 | 5 | const Hero = () => { 6 | const router = useRouter(); 7 | const role = typeof window !== "undefined" ? localStorage.getItem("role") || "" : ""; 8 | 9 | return ( 10 |
11 |
12 |

Book Appointments Easily

13 |

14 | STBA is your all-in-one solution for scheduling and managing academic meetings between students and teachers. 15 |

16 |
17 | 23 |
24 | ); 25 | }; 26 | 27 | export default Hero; -------------------------------------------------------------------------------- /04.chat-app/apps/chatapp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-app", 3 | "version": "0.1.0", 4 | "type": "module", 5 | "private": true, 6 | "scripts": { 7 | "dev": "next dev --turbopack --port 3000", 8 | "build": "next build", 9 | "start": "next start", 10 | "lint": "next lint --max-warnings 0", 11 | "check-types": "tsc --noEmit" 12 | }, 13 | "dependencies": { 14 | "@chatApp/types": "*", 15 | "@hookform/resolvers": "^5.0.1", 16 | "@tailwindcss/postcss": "^4.0.6", 17 | "axios": "^1.8.4", 18 | "next": "^15.2.1", 19 | "postcss": "^8.5.2", 20 | "react": "^19.0.0", 21 | "react-dom": "^19.0.0", 22 | "react-hook-form": "^7.55.0", 23 | "react-markdown": "^10.1.0", 24 | "remixicon": "^4.6.0", 25 | "sonner": "^2.0.3", 26 | "tailwindcss": "^4.0.6", 27 | "zod": "^3.24.2" 28 | }, 29 | "devDependencies": { 30 | "@chatApp/eslint-config": "*", 31 | "@chatApp/types": "*", 32 | "@chatApp/typescript-config": "*", 33 | "@types/node": "^22.13.9", 34 | "@types/react": "19.0.10", 35 | "@types/react-dom": "19.0.4", 36 | "eslint": "^9.22.0", 37 | "typescript": "5.8.2" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /07.portfolio/src/components/ui/Skills.tsx: -------------------------------------------------------------------------------- 1 | import { backendSkills, frontendSkills, toolsSkill } from "@/stores/skillStore"; 2 | import RevealAnimation from "../elements/skill/RevealAnimation"; 3 | import CardType1 from "../elements/skill/cards/CardType1"; 4 | import CardType2 from "../elements/skill/cards/CardType2"; 5 | 6 | const Skills = () => { 7 | return ( 8 |
9 |
10 | 11 |
12 | 13 |
14 |
15 | 16 |
17 |
18 | 19 |
20 |
21 | 22 |
23 |
24 |
25 |
26 | ); 27 | }; 28 | 29 | export default Skills; 30 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "05.student-teacher-booking-appointment", 3 | "private": true, 4 | "scripts": { 5 | "build": "turbo run build", 6 | "dev": "turbo run dev", 7 | "db:migrate": "cd packages/db && yarn prisma migrate dev && cd ../..", 8 | "db:generate": "cd packages/db && yarn prisma generate && cd ../..", 9 | "db:seed": "cd packages/db && yarn prisma db seed && cd ../..", 10 | "db:show": "cd packages/db && yarn prisma studio && cd ../..", 11 | "lint": "turbo run lint", 12 | "format": "prettier --write \"**/*.{ts,tsx,md}\"", 13 | "check-types": "turbo run check-types" 14 | }, 15 | "devDependencies": { 16 | "prettier": "^3.5.3", 17 | "turbo": "^2.4.4", 18 | "typescript": "5.8.2" 19 | }, 20 | "lint-staged": { 21 | "*.{ts,tsx,js,jsx}": "eslint --fix", 22 | "*.{json,md,css,scss}": "prettier --write" 23 | }, 24 | "engines": { 25 | "node": ">=18" 26 | }, 27 | "packageManager": "yarn@1.22.22", 28 | "workspaces": [ 29 | "apps/*", 30 | "packages/*" 31 | ], 32 | "dependencies": { 33 | "eslint": "^9.20.1", 34 | "lint-staged": "^15.4.3" 35 | } 36 | } -------------------------------------------------------------------------------- /07.portfolio/public/svg/back-express.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /06.blog-web/apps/web/src/hooks/index.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | import { api } from "../utils/api"; 3 | import { BlogType } from "@blog-web/types/client"; 4 | 5 | //custom hook for retrieving all blogs 6 | export const useBlogs = () => { 7 | const [loading, setLoading] = useState(true); 8 | const [blogs, setBlogs] = useState([]); 9 | 10 | useEffect(() => { 11 | api 12 | .get(`/blog`) 13 | .then((response) => { 14 | setBlogs(response.data.blog); 15 | setLoading(false); 16 | }) 17 | .catch((err) => { }); 18 | }, []); 19 | 20 | return { 21 | loading, 22 | blogs, 23 | }; 24 | }; 25 | 26 | //custom hook for retrieving blog 27 | export const useBlog = ({ id }: { id: string }) => { 28 | const [loading, setLoading] = useState(true); 29 | const [blog, setBlog] = useState(); 30 | 31 | useEffect(() => { 32 | api 33 | .get(`/blog/${id}`) 34 | .then((response) => { 35 | setBlog(response.data.blog); 36 | setLoading(false); 37 | }) 38 | .catch((err) => { }); 39 | }, [id]); 40 | 41 | return { 42 | loading, 43 | blog, 44 | }; 45 | }; 46 | -------------------------------------------------------------------------------- /05.student-teacher-booking-appointment/packages/types/src/server/validator/student.request.validator.ts: -------------------------------------------------------------------------------- 1 | import z from "zod"; 2 | 3 | //teacher search validator 4 | export const SearchTeacherSchema = z.object({ 5 | name: z.string().optional(), 6 | department: z.string().optional(), 7 | subject: z.string().optional() 8 | }); 9 | 10 | //student appointment book validator 11 | export const BookAppointmentSchema = z.object({ 12 | studentId: z.string().uuid("id need to a uuid").nonempty("studentId is required"), 13 | teacherId: z.string().uuid("id need to a uuid").nonempty("teacherId is required"), 14 | date: z.string().datetime("Format: YYYY-MM-DDTHH:MM:SSZ").nonempty("date is required"), 15 | }) 16 | 17 | //student appointment cancel validator 18 | export const CancelAppointmentSchema = z.object({ 19 | studentId: z.string().uuid("id need to a uuid").nonempty("studentId is required"), 20 | appointmentId: z.string().uuid("id need to a uuid").nonempty("appointmentId is required"), 21 | }); 22 | 23 | //get message schema 24 | export const GetMessageSchema = z.object({ 25 | studentId: z.string().uuid("id need to a uuid").nonempty("studentId is required"), 26 | appointmentId: z.string().uuid("id need to a uuid").nonempty("appointmentId is required") 27 | }) -------------------------------------------------------------------------------- /04.chat-app/apps/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.1.0", 4 | "description": "a server for out chatApp", 5 | "main": "index.js", 6 | "license": "MIT", 7 | "scripts": { 8 | "dev": "nodemon --exec ts-node src/index.ts", 9 | "build": "tsc -b", 10 | "start": "node dist/index.js", 11 | "lint": "eslint . --max-warnings 0", 12 | "check-types": "tsc --noEmit" 13 | }, 14 | "dependencies": { 15 | "@chatApp/db": "*", 16 | "@chatApp/types": "*", 17 | "@chatApp/utils": "*", 18 | "@types/cookie": "^1.0.0", 19 | "@types/cookie-parser": "^1.4.8", 20 | "@types/cors": "^2.8.17", 21 | "@types/express": "^5.0.0", 22 | "@types/jsonwebtoken": "^9.0.9", 23 | "@types/ws": "^8.18.0", 24 | "bcryptjs": "^3.0.2", 25 | "cookie": "^1.0.2", 26 | "cookie-parser": "^1.4.7", 27 | "cors": "^2.8.5", 28 | "dotenv": "^16.4.7", 29 | "express": "^4.21.2", 30 | "jsonwebtoken": "^9.0.2", 31 | "nodemon": "^3.1.9", 32 | "ts-node": "^10.9.2", 33 | "ws": "^8.18.1" 34 | }, 35 | "devDependencies": { 36 | "@chatApp/eslint-config": "*", 37 | "@chatApp/typescript-config": "*", 38 | "@types/node": "^22", 39 | "eslint": "^9.20.0", 40 | "typescript": "5.7.3" 41 | } 42 | } -------------------------------------------------------------------------------- /06.blog-web/apps/server/src/app.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | import cors from "cors"; 3 | import cookieParser from "cookie-parser"; 4 | import checkRoutes from "./middleware/checkRoutes"; 5 | import authRoutes from "./routes/auth.route"; 6 | import blogRoutes from "./routes/blog.route"; 7 | import commentRoutes from "./routes/comment.route"; 8 | 9 | const app = express(); 10 | 11 | // Middleware 12 | const allowedOrigins = ["http://localhost:5173"]; 13 | app.use( 14 | cors({ 15 | origin: function (origin, callback) { 16 | // Allow requests with no origin (like Postman) 17 | if (!origin) return callback(null, true); 18 | if (allowedOrigins.includes(origin)) { 19 | return callback(null, true); 20 | } 21 | return callback(new Error("Not allowed by CORS")); 22 | }, 23 | credentials: true, 24 | }) 25 | ); 26 | app.use(express.json()); 27 | app.use(cookieParser()); //parse the cookies 28 | app.use(checkRoutes); // check all routes 29 | 30 | app.use("/api/auth", authRoutes); 31 | app.use("/api/blog", blogRoutes); 32 | app.use("/api/comment", commentRoutes); 33 | 34 | // Default Route 35 | app.get("/", (_req, res) => { 36 | res.status(200).json({ msg: "Hello from blog-web server" }); 37 | }); 38 | 39 | 40 | export default app; 41 | --------------------------------------------------------------------------------