├── .dockerignore ├── .eslintrc.json ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug.yml │ ├── docs.yml │ ├── feature-request.yml │ ├── other.yml │ └── style.yml ├── dependabot.yml ├── pull_request_template.md └── workflows │ ├── auto-comment.yml │ ├── close_old_issues.yml │ ├── codeql.yml │ ├── issues.yml │ ├── lint.yml │ ├── lock.yml │ ├── nextjs.yml │ └── prevent_multiple_issues.yml ├── .gitignore ├── .husky ├── commit-msg └── pre-commit ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── CNAME ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── commitlint.config.js ├── jsconfig.json ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── postcss.config.js ├── public ├── Images │ └── logo.jpg ├── about.png ├── blog.jpg ├── boy.png ├── check-markf.png ├── coffee.jpg ├── discord.svg ├── favicon.ico ├── girl.jpg ├── github.svg ├── linkedin.svg ├── logo2.png ├── next.svg ├── quiz.jpg ├── spaces.jpg ├── tech-events.jpg ├── twitter.svg └── vercel.svg ├── src ├── assets │ ├── Event │ │ ├── API.jpg │ │ ├── Built_for_deveelopers.jpg │ │ ├── Devops_Kaiwalya.png │ │ ├── Susmita_hands_on_project.jpg │ │ └── Tapas_sir.png │ └── Team │ │ └── Developer.jpg ├── components │ ├── FaqAccordion.jsx │ ├── FaqAccordionItem.jsx │ ├── Footer.jsx │ ├── HeaderSocialMedia.jsx │ ├── Hello.js │ ├── HeroSection │ │ └── index.jsx │ ├── HomePage │ │ ├── Events_Cards │ │ │ ├── card.jsx │ │ │ └── index.jsx │ │ ├── Introductionvideo.jsx │ │ ├── aboutCommunity │ │ │ └── index.jsx │ │ ├── index.js │ │ └── stats │ │ │ └── index.jsx │ ├── Letter.jsx │ ├── Navbar.jsx │ ├── ScrollToTop.jsx │ ├── TeamPage │ │ └── index.jsx │ ├── button │ │ └── index.js │ ├── content │ │ ├── events.js │ │ ├── faq.js │ │ └── team.js │ ├── header │ │ └── index.js │ ├── iconbutton │ │ └── index.js │ ├── index.js │ ├── revealingsoon │ │ └── index.js │ └── testimonial.js ├── pages │ ├── 404.js │ ├── Contributors.js │ ├── _app.js │ ├── _document.js │ ├── about │ │ └── index.js │ ├── alan.js │ ├── api │ │ ├── hello.js │ │ └── subscribes.js │ ├── events │ │ ├── blogathon │ │ │ └── index.jsx │ │ ├── coffee │ │ │ └── index.jsx │ │ ├── index.jsx │ │ ├── quiz │ │ │ └── index.jsx │ │ ├── spaces │ │ │ └── index.jsx │ │ └── tech │ │ │ └── index.jsx │ ├── home │ │ └── index.jsx │ ├── index.js │ └── team │ │ └── index.jsx └── styles │ └── globals.css └── tailwind.config.js /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | build -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next", "next/core-web-vitals", "eslint:recommended"], 3 | "globals": { 4 | "React": "readonly" 5 | }, 6 | "rules": { 7 | "no-unused-vars": [1, { "args": "after-used", "argsIgnorePattern": "^_" }], 8 | "no-useless-escape": "off" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [Susmita-Dey] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.yml: -------------------------------------------------------------------------------- 1 | name: ​🐞 Bug 2 | description: Report an issue to help us improve the project. 3 | title: "[BUG] " 4 | labels: ["Goal: fix"] 5 | body: 6 | - type: checkboxes 7 | attributes: 8 | label: Is there any existing issue for this? 9 | description: Please search to see if an issue already exist for the bug you have encountered. 10 | options: 11 | - label: I have searched the existing issues 12 | required: true 13 | - type: textarea 14 | attributes: 15 | label: Description 16 | id: description 17 | description: A brief description of the issue or bug you are facing, also include what you tried and what didn't work. 18 | validations: 19 | required: false 20 | - type: textarea 21 | attributes: 22 | label: Screenshots 23 | id: screenshots 24 | description: Please add screenshots if applicable 25 | validations: 26 | required: false 27 | - type: textarea 28 | attributes: 29 | label: Any additional information? 30 | id: extrainfo 31 | description: Any additional information or Is there anything we should know about this bug? 32 | validations: 33 | required: false 34 | - type: dropdown 35 | id: browsers 36 | attributes: 37 | label: What browser are you seeing the problem on? 38 | multiple: true 39 | options: 40 | - Firefox 41 | - Chrome 42 | - Safari 43 | - Microsoft Edge 44 | - label: "I am a GSSoC'23 contributor" 45 | required: false 46 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/docs.yml: -------------------------------------------------------------------------------- 1 | name: 🔖 Documentation update 2 | description: Improve Documentation 3 | title: "[Docs]: " 4 | labels: ["documentation"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thanks for taking the time to fill out this documentation update template! 10 | - type: textarea 11 | id: improve-docs 12 | attributes: 13 | label: what's wrong in the documentation? 14 | description: which things need to add? 15 | placeholder: Add descriptions 16 | value: "We need to add " 17 | validations: 18 | required: true 19 | - type: textarea 20 | id: screenshots 21 | attributes: 22 | label: Add screenshots 23 | description: Add screenshots to see the demo 24 | placeholder: Add screenshots 25 | value: "Add screenshots" 26 | - type: checkboxes 27 | id: terms 28 | attributes: 29 | label: Code of Conduct 30 | description: By submitting this issue, you agree to follow our Code of Conduct 31 | options: 32 | - label: I agree to follow this project's Code of Conduct 33 | - label: "I am a GSSoC'23 contributor" 34 | required: false 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.yml: -------------------------------------------------------------------------------- 1 | name: "Feature Request 💡" 2 | description: "Have any new idea or new feature for DevsInTech? Please request!" 3 | title: "[Feature] <description>" 4 | labels: ["Goal: addition"] 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: Description 10 | description: A clear and concise description of any alternative solution or features you've considered. 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: screenshots 15 | attributes: 16 | label: Screenshots 17 | description: Please add screenshots if applicable 18 | validations: 19 | required: false 20 | - type: textarea 21 | id: extrainfo 22 | attributes: 23 | label: Additional Information 24 | description: Add any other context or anything else about this idea 25 | validations: 26 | required: false 27 | - type: checkboxes 28 | id: terms 29 | attributes: 30 | label: Code of Conduct 31 | description: By submitting this issue, you agree to follow our Code of Conduct 32 | options: 33 | - label: I agree to follow this project's Code of Conduct 34 | - label: "I am a GSSoC'23 contributor" 35 | required: false 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/other.yml: -------------------------------------------------------------------------------- 1 | name: Other 2 | description: Use this for any other question or issue. Please do not create blank issues 3 | title: "[OTHER]" 4 | labels: ["status: awaiting triage"] 5 | body: 6 | - type: textarea 7 | id: issuedescription 8 | attributes: 9 | label: What would you like to share or ask? 10 | description: Provide a clear and concise explanation of your issue. 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: extrainfo 15 | attributes: 16 | label: Additional information 17 | description: Is there anything else you want to add? 18 | validations: 19 | required: false 20 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/style.yml: -------------------------------------------------------------------------------- 1 | name: "Style Changing Request" 2 | description: "Suggest style designs" 3 | title: "[style]: " 4 | labels: ["style"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Thanks for taking the time to fill out this template! 10 | - type: textarea 11 | id: style-idea 12 | attributes: 13 | label: What's the style idea? 14 | placeholder: Add descriptions 15 | value: "We need to improve " 16 | validations: 17 | required: true 18 | - type: textarea 19 | id: screenshots 20 | attributes: 21 | label: Add screenshots 22 | description: Add screenshots to showcase the style 23 | placeholder: Add screenshots 24 | value: "Add screenshots" 25 | - type: checkboxes 26 | id: terms 27 | attributes: 28 | label: Code of Conduct 29 | description: By submitting this issue, you agree to follow our Code of Conduct 30 | options: 31 | - label: "I agree to follow this project's Code of Conduct" 32 | - type: checkboxes 33 | id: gssoc 34 | attributes: 35 | label: GSSoC'23 36 | description: "This is for GSSoC'23 contributors only." 37 | options: 38 | - label: "I am a GSSoC'23 Contributor." 39 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'npm' 4 | directory: '/' 5 | schedule: 6 | interval: 'daily' -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | <!-- If your PR fixes an open issue, use `Closes #999` to link your PR with the issue. #999 stands for the issue number you are fixing --> 2 | 3 | ## Fixes Issue 4 | 5 | <!-- Remove this section if not applicable --> 6 | 7 | <!-- Example: Closes #31 --> 8 | 9 | ## Changes proposed 10 | 11 | <!-- List all the proposed changes in your PR --> 12 | 13 | ## Screenshots 14 | 15 | <!-- Add all the screenshots which support your changes --> 16 | 17 | ## Note to reviewers 18 | 19 | <!-- Add notes to reviewers if applicable --> 20 | -------------------------------------------------------------------------------- /.github/workflows/auto-comment.yml: -------------------------------------------------------------------------------- 1 | name: Auto Comment 2 | on: 3 | issues: 4 | types: 5 | - opened 6 | - closed 7 | - assigned 8 | pull_request: 9 | types: 10 | - opened 11 | - closed 12 | 13 | jobs: 14 | run: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Auto Comment on Issues Opened 18 | uses: wow-actions/auto-comment@v1 19 | with: 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | issuesOpened: | 22 | 👋 @{{ author }} 23 | 24 | Thank you for raising an issue. We will investigate into the matter and get back to you as soon as possible. 25 | 26 | Please make sure you have given us as much context as possible. 27 | 28 | - name: Auto Comment on Issues Closed 29 | uses: wow-actions/auto-comment@v1 30 | with: 31 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 32 | issuesClosed: | 33 | 👋 @{{ author }} This issue is closed. 34 | 35 | - name: Auto Comment on Pull Request Merged 36 | uses: wow-actions/auto-comment@v1 37 | with: 38 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 39 | pullRequestMerged: | 40 | 👋 @{{ author }} 🎉 Congrats on your merged pull request! Thanks for the valuable contribution! 👏🎉 Congrats on your merged pull request! Thanks for the valuable contribution! 👏 41 | 42 | - name: Auto Comment on Pull Request Opened 43 | uses: wow-actions/auto-comment@v1 44 | with: 45 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 46 | pullRequestOpened: | 47 | Hello👋 @{{ author }}, I hope you are doing well! 48 | <br> 49 | Thank you for raising your pull request and contributing to our Community 🎉 50 | 51 | Please make sure you have followed our contributing guidelines. We will review it as soon as possible. 52 | 53 | - name: Auto Comment on Issues Assigned 54 | uses: wow-actions/auto-comment@v1 55 | with: 56 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 57 | issuesAssigned: | 58 | Hello @{{ author }}, thank you for raising an issue. 🙌 Kindly wait for the maintainers to assign you the issue before starting any work on it. If you encounter any problems, please feel free to connect with us. 👍 59 | 60 | 61 | -------------------------------------------------------------------------------- /.github/workflows/close_old_issues.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Close Old Issues 3 | on: 4 | schedule: 5 | - cron: 0 0 * * * 6 | jobs: 7 | close-issues: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout Repository 11 | uses: actions/checkout@v3 12 | - name: Close Old Issues 13 | run: > 14 | open_issues=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" 15 | \ 16 | "https://api.github.com/repos/${{ github.repository }}/issues?state=open" \ 17 | | jq -r '.[] | .number') 18 | for issue in $open_issues; do 19 | # Get the last updated timestamp of the issue 20 | last_updated=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ 21 | "https://api.github.com/repos/${{ github.repository }}/issues/$issue" \ 22 | | jq -r '.updated_at') 23 | days_since_update=$(( ( $(date +%s) - $(date -d "$last_updated" +%s) ) / 86400 )) 24 | if [ $days_since_update -gt 20 ]; then # Modify the condition to check if days_since_update is greater than 20 25 | curl -s -X PATCH -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ 26 | -H "Accept: application/vnd.github.v3+json" \ 27 | -d '{"state":"closed"}' \ 28 | "https://api.github.com/repos/${{ github.repository }}/issues/$issue" 29 | fi 30 | done -------------------------------------------------------------------------------- /.github/workflows/codeql.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ "main" ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ "main" ] 20 | schedule: 21 | - cron: '43 3 * * 6' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} 27 | timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} 28 | permissions: 29 | actions: read 30 | contents: read 31 | security-events: write 32 | 33 | strategy: 34 | fail-fast: false 35 | matrix: 36 | language: [ 'javascript' ] 37 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ] 38 | # Use only 'java' to analyze code written in Java, Kotlin or both 39 | # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both 40 | # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support 41 | 42 | steps: 43 | - name: Checkout repository 44 | uses: actions/checkout@v3 45 | 46 | # Initializes the CodeQL tools for scanning. 47 | - name: Initialize CodeQL 48 | uses: github/codeql-action/init@v2 49 | with: 50 | languages: ${{ matrix.language }} 51 | # If you wish to specify custom queries, you can do so here or in a config file. 52 | # By default, queries listed here will override any specified in a config file. 53 | # Prefix the list here with "+" to use these queries and those in the config file. 54 | 55 | # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs 56 | # queries: security-extended,security-and-quality 57 | 58 | 59 | # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). 60 | # If this step fails, then you should remove it and run the build manually (see below) 61 | - name: Autobuild 62 | uses: github/codeql-action/autobuild@v2 63 | 64 | # ℹ️ Command-line programs to run using the OS shell. 65 | # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun 66 | 67 | # If the Autobuild fails above, remove it and uncomment the following three lines. 68 | # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. 69 | 70 | # - run: | 71 | # echo "Run, Build Application using script" 72 | # ./location_of_script_within_repo/buildscript.sh 73 | 74 | - name: Perform CodeQL Analysis 75 | uses: github/codeql-action/analyze@v2 76 | with: 77 | category: "/language:${{matrix.language}}" -------------------------------------------------------------------------------- /.github/workflows/issues.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Add Comment to Newly Open Issue 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | jobs: 8 | add-comment: 9 | runs-on: ubuntu-latest 10 | permissions: 11 | issues: write 12 | steps: 13 | - name: Checkout repository 14 | uses: actions/checkout@v3 15 | - name: Add Comment 16 | uses: actions/github-script@v4 17 | with: 18 | github-token: ${{ secrets.GITHUB_TOKEN }} 19 | script: > 20 | const { issue } = context.payload; 21 | 22 | const author = issue.user.login; 23 | 24 | const issueNumber = issue.number; 25 | 26 | const comment = `Hello @${author}! \n Thank you for raising this issue. \nPlease make sure to follow our [Contributing Guidelines.](https://github.com/devs-in-tech/DevsInTech/blob/main/CONTRIBUTING.md) \nDon't forget to ⭐ our [DevsInTech](https://github.com/devs-in-tech/DevsInTech)\n\nOur review team will carefully assess the issue and reach out to you soon!\n We appreciate your patience!`; 27 | 28 | const { owner, repo } = context.repo; 29 | 30 | await github.issues.createComment({ 31 | owner: owner, 32 | repo: repo, 33 | issue_number: issueNumber, 34 | body: comment 35 | }); 36 | 37 | console.log(`Comment added to the Issue #${issueNumber}.`); -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Linting 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | 7 | Linting: 8 | 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | 13 | - name: Checkout 14 | uses: actions/checkout@v3 15 | with: 16 | ref: ${{ github.head_ref }} 17 | 18 | - name: Lint code with prettier 19 | uses: creyD/prettier_action@v4.3 20 | with: 21 | prettier_options: --write **/*.{js,md} 22 | -------------------------------------------------------------------------------- /.github/workflows/lock.yml: -------------------------------------------------------------------------------- 1 | name: 'Issue Lockdown' 2 | 3 | on: 4 | issues: 5 | types: opened 6 | 7 | permissions: 8 | issues: write 9 | 10 | jobs: 11 | action: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: dessant/repo-lockdown@v3 # Reference: https://github.com/dessant/repo-lockdown 15 | with: 16 | close-issue: false 17 | process-only: 'issues' 18 | issue-labels: 'gssoc23' 19 | exclude-issue-labels: '🚀 ready' 20 | skip-closed-issue-comment: true 21 | issue-comment: > 22 | To reduce notifications, issues are locked. Your issue will be unlocked when we add the label, `🚀 ready`. -------------------------------------------------------------------------------- /.github/workflows/nextjs.yml: -------------------------------------------------------------------------------- 1 | # Sample workflow for building and deploying a Next.js site to GitHub Pages 2 | # 3 | # To get started with Next.js see: https://nextjs.org/docs/getting-started 4 | # 5 | name: Deploy Next.js site to Pages 6 | 7 | on: 8 | # Runs on pushes targeting the default branch 9 | push: 10 | branches: ["main"] 11 | 12 | # Allows you to run this workflow manually from the Actions tab 13 | workflow_dispatch: 14 | 15 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 16 | permissions: 17 | contents: read 18 | pages: write 19 | id-token: write 20 | 21 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. 22 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. 23 | concurrency: 24 | group: "pages" 25 | cancel-in-progress: false 26 | 27 | jobs: 28 | # Build job 29 | build: 30 | runs-on: ubuntu-latest 31 | steps: 32 | - name: Checkout 33 | uses: actions/checkout@v3 34 | - name: Detect package manager 35 | id: detect-package-manager 36 | run: | 37 | if [ -f "${{ github.workspace }}/yarn.lock" ]; then 38 | echo "manager=yarn" >> $GITHUB_OUTPUT 39 | echo "command=install" >> $GITHUB_OUTPUT 40 | echo "runner=yarn" >> $GITHUB_OUTPUT 41 | exit 0 42 | elif [ -f "${{ github.workspace }}/package.json" ]; then 43 | echo "manager=npm" >> $GITHUB_OUTPUT 44 | echo "command=ci" >> $GITHUB_OUTPUT 45 | echo "runner=npx --no-install" >> $GITHUB_OUTPUT 46 | exit 0 47 | else 48 | echo "Unable to determine package manager" 49 | exit 1 50 | fi 51 | - name: Setup Node 52 | uses: actions/setup-node@v3 53 | with: 54 | node-version: "16" 55 | cache: ${{ steps.detect-package-manager.outputs.manager }} 56 | - name: Setup Pages 57 | uses: actions/configure-pages@v3 58 | with: 59 | # Automatically inject basePath in your Next.js configuration file and disable 60 | # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized). 61 | # 62 | # You may remove this line if you want to manage the configuration yourself. 63 | static_site_generator: next 64 | - name: Restore cache 65 | uses: actions/cache@v3 66 | with: 67 | path: | 68 | .next/cache 69 | # Generate a new cache whenever packages or source files change. 70 | key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} 71 | # If source files changed but packages didn't, rebuild from a prior cache. 72 | restore-keys: | 73 | ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}- 74 | - name: Install dependencies 75 | run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} 76 | - name: Build with Next.js 77 | run: ${{ steps.detect-package-manager.outputs.runner }} next build 78 | - name: Static HTML export with Next.js 79 | run: ${{ steps.detect-package-manager.outputs.runner }} next export 80 | - name: Upload artifact 81 | uses: actions/upload-pages-artifact@v1 82 | with: 83 | path: ./out 84 | 85 | # Deployment job 86 | deploy: 87 | environment: 88 | name: github-pages 89 | url: ${{ steps.deployment.outputs.page_url }} 90 | runs-on: ubuntu-latest 91 | needs: build 92 | steps: 93 | - name: Deploy to GitHub Pages 94 | id: deployment 95 | uses: actions/deploy-pages@v2 96 | -------------------------------------------------------------------------------- /.github/workflows/prevent_multiple_issues.yml: -------------------------------------------------------------------------------- 1 | name: Close Issue if Opener has Opened Issues 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | 8 | jobs: 9 | close_issue: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Check if opener has multiple open issues 14 | id: check_open_issues 15 | uses: actions/github-script@v4 16 | with: 17 | github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} 18 | script: | 19 | const owner = context.repo.owner; 20 | const repo = context.repo.repo; 21 | const issueNumber = context.issue.number; 22 | const issueOpener = context.payload.issue.user.login; 23 | const previousIssuesResponse = await github.request('GET /repos/{owner}/{repo}/issues', { 24 | owner, 25 | repo, 26 | state: 'open', 27 | creator: issueOpener 28 | }); 29 | const previousOpenIssues = previousIssuesResponse.data.filter(issue => issue.number !== issueNumber && !issue.pull_request); 30 | const previousOpenIssueNumbers = previousOpenIssues.map(issue => `#${issue.number}`); 31 | const openerName = context.payload.issue.user.login; 32 | const closeIssue = previousOpenIssues.length > 0; 33 | console.log(`Close issue: ${closeIssue}`); 34 | if (closeIssue) { 35 | const comment = `Hey @${openerName} , You can't have another issue before completing the previous one 😀 \n you already have the following ${previousOpenIssues.length} open issues 👀 ! :\n\n${previousOpenIssueNumbers.join('\n')}`; 36 | core.exportVariable('comment_body', comment); // Export the variable 37 | core.setOutput('close_issue', true); 38 | } else { 39 | core.exportVariable('comment_body', ''); 40 | core.setOutput('close_issue', false); 41 | } 42 | - name: Close the issue and add a comment 43 | if: always() && ${{ needs.check_open_issues.outputs.close_issue }} 44 | uses: actions/github-script@v4 45 | with: 46 | github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} 47 | script: | 48 | const owner = context.repo.owner; 49 | const repo = context.repo.repo; 50 | const issueNumber = context.issue.number; 51 | const comment = process.env.comment_body; // Retrieve the exported variable 52 | 53 | if (comment.trim() === '') { 54 | console.log('Comment body is empty. Skipping comment creation.'); 55 | return; 56 | } 57 | const closeComment = `${comment}`; 58 | await github.issues.createComment({ 59 | owner, 60 | repo, 61 | issue_number: issueNumber, 62 | body: closeComment 63 | }); 64 | await github.issues.update({ 65 | owner, 66 | repo, 67 | issue_number: issueNumber, 68 | state: 'closed' 69 | }); -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | .env.local 75 | 76 | # parcel-bundler cache (https://parceljs.org/) 77 | .cache 78 | 79 | # Next.js build output 80 | .next 81 | 82 | # Nuxt.js build / generate output 83 | .nuxt 84 | dist 85 | 86 | # Gatsby files 87 | .cache/ 88 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 89 | # https://nextjs.org/blog/next-9-1#public-directory-support 90 | # public 91 | 92 | # vuepress build output 93 | .vuepress/dist 94 | 95 | # Serverless directories 96 | .serverless/ 97 | 98 | # FuseBox cache 99 | .fusebox/ 100 | 101 | # DynamoDB Local files 102 | .dynamodb/ 103 | 104 | # TernJS port file 105 | .tern-port 106 | 107 | # package-lock.json 108 | package-lock.json -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx --no -- commitlint --edit "$1" 5 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm run lint 5 | npm run build 6 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | auto-install-peers=true -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .yarn 2 | .next 3 | dist 4 | node_modules -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": false 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "editor.formatOnSave": true, 4 | "editor.codeActionsOnSave": { 5 | "source.fixAll": true, 6 | "source.organizeImports": true 7 | }, 8 | "[javascriptreact]": { 9 | "editor.defaultFormatter": "vscode.typescript-language-features" 10 | } 11 | } -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | https://devsintech.co 2 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, caste, color, religion, or sexual 10 | identity and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Giving and gracefully accepting constructive feedback 23 | - Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | - Focusing on what is best not just for us as individuals, but for the overall 26 | community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | - The use of sexualized language or imagery, and sexual attention or advances of 31 | any kind 32 | - Trolling, insulting or derogatory comments, and personal or political attacks 33 | - Public or private harassment 34 | - Publishing others' private information, such as a physical or email address, 35 | without their explicit permission 36 | - Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | support@devsintech.co. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series of 86 | actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or permanent 93 | ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within the 113 | community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.1, available at 119 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. 120 | 121 | Community Impact Guidelines were inspired by 122 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. 123 | 124 | For answers to common questions about this code of conduct, see the FAQ at 125 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at 126 | [https://www.contributor-covenant.org/translations][translations]. 127 | 128 | [homepage]: https://www.contributor-covenant.org 129 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html 130 | [Mozilla CoC]: https://github.com/mozilla/diversity 131 | [FAQ]: https://www.contributor-covenant.org/faq 132 | [translations]: https://www.contributor-covenant.org/translations 133 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to DevsInTech 2 | 3 | Welcome to **_DevsInTech_**✨, and thank you for your interest in contributing! After reading this documentation you'll be able to contribute efficiently to our project. **Tip:** Use the Table of Contents to navigate through the document quickly. 4 | 5 | ## Table Of Contents 6 | 7 | - [Resources for new contributors](#resources-for-new-contributors) 8 | - [How to get started](#how-to-get-started) 9 | - [Using the Command Line](#using-the-command-line) 10 | - [Using GitHub Desktop](#using-github-desktop) 11 | - [How to set up your Development Environment](#how-to-set-up-your-development-environment) 12 | - [How to Contribute](#how-to-contribute) 13 | - [How to Raise an Issue](#how-to-raise-an-issue) 14 | - [How to report a bug](#how-to-report-a-bug) 15 | - [How to submit a Documentation Issue/Update](#how-to-submit-a-documentation-issueupdate) 16 | - [How to make a Feature Request](#how-to-make-a-feature-request) 17 | - [How to make a style change](#how-to-make-a-style-change) 18 | - [How to Solve an Issue](#how-to-solve-an-issue) 19 | - [How to Submit Pull Requests](#how-to-submit-pull-requests) 20 | - [Using Command Line for Pull Requests](#using-command-line-for-pull-requests) 21 | - [Using GitHub Desktop for Pull Requests](#using-github-desktop-for-pull-requests) 22 | - [Code of Conduct](#code-of-conduct) 23 | - [Community Guidelines](#community-guidelines) 24 | - [Licensing](#licensing) 25 | 26 | ## Resources for new contributors 27 | 28 | Are you new to open source? or to open source contributions in general? Well, you came to the right place: here are some resources to help you get started contributing to open source. 29 | 30 | - [Learn Git and GitHub from scratch](https://youtu.be/apGV9Kg7ics) - This tutorial explains Git and GitHub for version control and collaborative coding. 31 | - [Complete Guide to Open Source - How to Contribute](https://youtu.be/yzeVMecydCE) - Learn about how to find projects to contribute to, how to make issues and PRs, and more. 32 | - [Learn Git Branching](https://learngitbranching.js.org/) - This website provides an interactive platform for learning and practicing Git commands and branching strategies. 33 | - [GitHub Training Kit](https://training.github.com/) - It contains cheatsheets and training manuals in multiple languages 34 | - [Git and GitHub for Beginners - Crash Course](https://youtu.be/RGOj5yH7evk) - This tutorial explains users how to effectively utilize Git version control within the Visual Studio Code editor 35 | - [GitHub Documentation](https://docs.github.com/en) - Contains essential guides for mastering GitHub's features 36 | 37 | ## How to get started 38 | 39 | Before making any changes to this repository, please take your time to go through our project and become familiar with our vision for it. After that, discuss your proposed modifications to improve our project with the repository owners and mentors. Feel free to use issues, email, or any other convenient method of communication to initiate the discussion. 40 | 41 | It's worth noting that we have a [Code of Conduct](https://github.com/TanmayAdithya/DevsInTech/blob/main/CODE_OF_CONDUCT.md) in place, and we kindly ask that you follow it when engaging with the project. We appreciate your cooperation and respectful interactions. 42 | 43 | ## What are the tools needed to contribute to this project 44 | 45 | Before you start, you must install the necessary tools mentioned below onto your device. 46 | 47 | [![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org/en/download/) [![Git](https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge&logo=git&logoColor=white)](https://git-scm.com/downloads) [![pnpm](https://img.shields.io/static/v1?style=for-the-badge&message=pnpm&color=222222&logo=pnpm&logoColor=F69220&label=)](https://pnpm.io/) 48 | 49 | ## How to set up your Development Environment 50 | 51 | ##### Using the **Command Line** 52 | 53 | 1. Fork the repo. 54 | ![Fork-Image](https://i.postimg.cc/GpGzgX9Z/Git-Hub-Docs.png) 55 | 56 | 2. Clone the Forked Repository to your local machine. 57 | 58 | ```bash 59 | git clone https://github.com/YOUR_USER_NAME/DevsInTech.git 60 | ``` 61 | 62 | 3. Change the working directory. 63 | ```bash 64 | cd DevsInTech 65 | ``` 66 | 4. Install all dependencies. 67 | ```bash 68 | pnpm i 69 | ``` 70 | 5. Start the application. 71 | ```bash 72 | pnpm dev 73 | ``` 74 | 6. Visit [http://localhost:3000](http://localhost:3000) to view the application 75 | 76 | ##### Using **GitHub Desktop** 77 | 78 | 1. Fork the repo. 79 | 80 | ![Fork-Image](https://i.postimg.cc/GpGzgX9Z/Git-Hub-Docs.png) 81 | 82 | 2. In the forked repository click **Open with GitHub Desktop** (make sure to download GitHub Desktop [here](https://desktop.github.com/)) 83 | 84 | ![Open-with-GitHub-Desktop](https://i.postimg.cc/7L4212QN/Open-with-Git-Hub-Desktop.png) 85 | 86 | 3. Once **GitHub Desktop** opens up, make sure "**To contribute to the parent project**" option is selected and then click on **Continue** 87 | 88 | ![Contribute to upstream repo](https://i.postimg.cc/gJn3S63L/Contribute-to-upstream-repo.png) 89 | 90 | 4. Finally, open the project in your preferred code editor. (**Warning:** To contribute to the project, all code and documentation modifications should be committed to a separate branch rather than **main/master**.) 91 | 92 | ![open-code-editor](https://i.postimg.cc/TY31xXKf/Open-in-Code-editor.png) 93 | 94 | ## How To Contribute 95 | 96 | Your contributions, whether code-related or not, are highly valued and appreciated. Every contribution, no matter how small, helps make the project better. Outlined below are several ways you can contribute to the project. 97 | 98 | ### What are Github Issues 99 | 100 | --- 101 | 102 | GitHub issues are a way to track and manage tasks, bugs, and discussions in a project. You can find the issues tab within a GitHub repository, usually located in the navigation menu at the top of the repository page. 103 | 104 | [![issues.png](https://i.postimg.cc/wvy92tvq/issues.png)](https://postimg.cc/zbNmXGK6) 105 | 106 | ### How to Raise an Issue 107 | 108 | --- 109 | 110 | _Raising an issue_ involves creating a new entry in the repository's issue tracker to report problems, suggest improvements, or start discussions, facilitating collaboration and issue resolution. **Note:** Always look for existing issues that are similar to the one you want to raise. If you find any, please do not raise the same issue again; otherwise, you may continue to raise your issue. 111 | 112 | You can raise an issue by visiting the issues page and clicking the green **New issue** button. 113 | 114 | [![new-issue.png](https://i.postimg.cc/rmPDj0Lg/new-issue.png)](https://postimg.cc/R6wCV0hn) 115 | 116 | By choosing the correct issue type, such as bug report, feature request, documentation update, or any other types of issues, you provide clarity and help streamline the issue management process for project maintainers and other contributors. 117 | 118 | [![types-of-issues.png](https://i.postimg.cc/qR59708z/types-of-issues.png)](https://postimg.cc/k6Wjj0Ym) 119 | 120 | ### How to report a bug 121 | 122 | --- 123 | 124 | When reporting bugs on GitHub, it is important to include the following information: 125 | 126 | - Steps to reproduce the bug. 127 | - Error messages encountered, if any. 128 | - Screenshots or visual examples illustrating the issue. 129 | - Any relevant code snippets or configuration settings. 130 | - Details about the environment (operating system, browser, etc.). 131 | - Any specific inputs or conditions that trigger the bug. 132 | - Additional observations or context that may be helpful in understanding the problem. 133 | 134 | This helps expedite the identification and resolution of the bug. 135 | 136 | ### How to submit a Documentation Issue/Update 137 | 138 | --- 139 | 140 | When reporting a documentation issue or update, it is important to provide clear details and suggestions for improvement. Here are the key points to include: 141 | 142 | - Clearly describe the problem or issue with the documentation. 143 | - Identify the specific section or page of the documentation where the problem exists. 144 | - Suggest specific improvements, corrections, or additions to address the issue. 145 | - Provide examples or code snippets that can help illustrate the problem or proposed changes. 146 | - Mention any confusion or misunderstandings caused by the current documentation. 147 | - Offer any additional context or information that can assist in resolving the issue. 148 | 149 | ### How to make a Feature Request 150 | 151 | --- 152 | 153 | When submitting a feature request, it is important to provide clear details and suggestions to help project maintainers and contributors understand and evaluate your request. Here are the key points to include: 154 | 155 | - Clearly describe the feature you are requesting, including its purpose and the problem it aims to solve. 156 | - Explain the potential benefits and impact of implementing the requested feature. 157 | - Consider including any relevant examples, code snippets, or mock-ups to illustrate your request. 158 | - Explain how the requested feature aligns with the goals and scope of the project. 159 | 160 | ### How to make a style change 161 | 162 | --- 163 | 164 | When suggesting a style change on GitHub, it is important to provide clear details and explanations to help project maintainers and contributors understand the proposed change. Here are the key points to include as bullet points: 165 | 166 | - Clearly describe the specific aspect of the project's style that you would like to change. 167 | - Explain the rationale behind the suggested style change and why it would be beneficial. 168 | - Provide specific examples or comparisons to illustrate the current style and the desired style. 169 | - Offer any additional context or information that can assist in evaluating and implementing the style change. 170 | 171 | **Note:** If the issue you wish to raise does not fit into one of these categories, create a blank issue. 172 | 173 | ### How to solve an Issue 174 | 175 | --- 176 | 177 | If you'd like to solve an issue, you can browse our list of open issues in the repository or on our issue tracker. Using relevant labels, you can identify issues which you are capable of resolving. Some of these labels are listed below: 178 | 179 | [`GSSoC23`](https://github.com/devs-in-tech/DevsInTech/labels/GSSoC23) - This label is assigned to those who want to work on an issue under GSSoC23 180 | 181 | [`Level 1`](https://github.com/devs-in-tech/DevsInTech/labels/Level%201) - 10 Points (Docs/Minor bugs) 182 | 183 | [`Level 2`](https://github.com/devs-in-tech/DevsInTech/labels/Level%202) - 25 Points (Enhancement of Exisiting feature) 184 | 185 | [`Level 3`](https://github.com/devs-in-tech/DevsInTech/labels/Level%203) - 45 Points (Refactoring/adding functionalities) 186 | 187 | [`question`](https://github.com/devs-in-tech/DevsInTech/labels/question) - Further information is requested 188 | 189 | [`under review`](https://github.com/devs-in-tech/DevsInTech/labels/under%20review) - PR is under review by maintainers. 190 | 191 | [`bug`](https://github.com/devs-in-tech/DevsInTech/labels/bug) - Something isn't working 192 | 193 | [`documentation`](https://github.com/devs-in-tech/DevsInTech/labels/documentation) - Improvements or additions to documentation 194 | 195 | [`duplicate`](https://github.com/thekavikumar/love-simple-ui/labels/duplicate) - This issue or pull request already exists 196 | 197 | [`enhancement`](https://github.com/thekavikumar/love-simple-ui/labels/enhancement) - New feature or request 198 | 199 | [`good first issue`](https://github.com/thekavikumar/love-simple-ui/labels/good%20first%20issue): Good for new contributors 200 | 201 | [`help wanted`](https://github.com/thekavikumar/love-simple-ui/labels/help%20wanted) - Extra attention is needed 202 | 203 | [`invalid`](https://github.com/thekavikumar/love-simple-ui/labels/invalid) - This doesn't seem right 204 | 205 | [`wontfix`](https://github.com/thekavikumar/love-simple-ui/labels/wontfix) - This will not be worked on 206 | 207 | If the issue is unassigned and you are interested in working on it, comment on the issue expressing your intention to contribute and ask to be assigned. Alternatively, if self-assignment is allowed, you can assign yourself to the issue. Discuss your approach with maintainers and contributors to align efforts and receive feedback. 208 | 209 | ## How to Submit Pull Requests 210 | 211 | Before you create a pull request, please take a moment to review the guidelines outlined below. Following these guidelines will help ensure a smooth and efficient collaboration process. 212 | 213 | ### Format for Pull Requests 214 | 215 | Make sure to commit following the Conventional Commits Standards. Your commit message should follow the pattern: `<type>[optional scope]: <description>` 216 | 217 | `type` refers to : 218 | 219 | - **feat**: A new feature 220 | - **fix**: A bug fix 221 | - **refactor**: Code refactoring 222 | - **test**: Additions or modifications to test cases 223 | - **docs**: README, or anything related to documentation 224 | - **chore**: Regular code maintenance 225 | 226 | `scope` (optional) refers to the section of the codebase you're working on _(eg. api, frontend, backend)_ 227 | 228 | `description` : A short summary providing additional contextual information about the code changes. 229 | 230 | Read more about [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) 231 | 232 | ### Using Command Line for Pull Requests 233 | 234 | - If you have already forked the project, update your copy before working. 235 | 236 | ```bash 237 | git remote update 238 | git checkout <branch-name> 239 | git rebase upstream/<branch-name> 240 | 241 | ``` 242 | 243 | ⚠️ **Warning:** Avoid commting changes in the Main Branch ⚠️ 244 | 245 | - Create a new branch for your changes: 246 | **Note:** Creating a new branch allows for isolated development and avoids merge conflicts while making PRs 247 | 248 | ```bash 249 | git checkout -b my-branch 250 | #Utilize the branch name to specify the type of issue you are addressing, whether it's a feature, bug fix, or enhancement. 251 | 252 | ``` 253 | 254 | - Commit and push your changes to your forked repository: 255 | **Note:** A PR should have only one commit. Multiple commits should be squashed. Always write a clear log message for your commits. One-line messages are fine for small changes, but bigger changes should be more descriptive. 256 | - Make sure all of your commits are atomic (one feature per commit). 257 | 258 | ```bash 259 | git add . 260 | git commit -m "Add my changes" 261 | git push origin my-branch 262 | 263 | ``` 264 | 265 | - Go to your repository in browser and click on compare and pull requests. Then add a title and description to your pull request that explains your contribution. 266 | ![https://i.postimg.cc/1Xh6dxLJ/Final-PR.png](https://i.postimg.cc/1Xh6dxLJ/Final-PR.png) 267 | 268 | ### Using GitHub Desktop for Pull Requests 269 | 270 | - Create a new branch for your changes: 271 | [![new-branch.png](https://i.postimg.cc/DypKNNW7/new-branch.png)](https://postimg.cc/4mcM7Bb0) 272 | - Open your external code editor and connect to the repository. When you're through with your changes, commit and push them to your forked repository.: 273 | **Note:** Always write a clear log message for your commits. One-line messages are fine for small changes, but bigger changes should be more descriptive. 274 | ![https://i.postimg.cc/5y5PMs7J/Commit-Github-desktop.png](https://i.postimg.cc/5y5PMs7J/Commit-Github-desktop.png) 275 | - Click on **Push origin** or press `Ctrl`+`P` or `⌘`+`P` to push your commits to the branch of your repository on Github. Learn more GitHub Desktop keyboard shortcuts [here](https://docs.github.com/en/desktop/installing-and-configuring-github-desktop/overview/github-desktop-keyboard-shortcuts). 276 | ![https://i.postimg.cc/j5QdRGD8/push-origin.png](https://i.postimg.cc/j5QdRGD8/push-origin.png) 277 | - Go to your repository in browser and click on compare and pull requests. Then add a title and description to your pull request that explains your contribution or press `Ctrl` + `R` or `⌘` + `R` on the keyboard in GitHub Desktop. 278 | ![https://i.postimg.cc/1Xh6dxLJ/Final-PR.png](https://i.postimg.cc/1Xh6dxLJ/Final-PR.png) 279 | 280 | ### Best Practices for Creating a Pull Request (PR): 281 | 282 | - **Clear and Descriptive Title:** Provide a concise, descriptive title for your PR. 283 | - **Detailed Description:** Include a thorough description of your changes. 284 | - List specific changes made in a clear and concise manner. Mention any major code modifications, added functionality, or removed features. 285 | - Create a checklist to help maintainers review the changes more effectively. 286 | - Include screenshots or GIFs showcasing visual changes or new features. 287 | - Mention any additional information or considerations that might be relevant. 288 | - Be responsive to any feedback or change requests during the review process. 289 | 290 | **Note:** [Getting started with GitHub Desktop](https://docs.github.com/en/desktop/installing-and-configuring-github-desktop/getting-started-with-github-desktop) will guide you through setting up Desktop. Once Desktop is set up, you can use it to [fork the repo](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/cloning-and-forking-repositories-from-github-desktop)! 291 | 292 | ## Code of Conduct 293 | 294 | By participating and contributing to this project, you agree to adhere to [this](https://github.com/devs-in-tech/DevsInTech/blob/main/CODE_OF_CONDUCT.md) Code of Conduct throughout your involvement. We appreciate your cooperation in fostering a positive and inclusive community for all. 295 | 296 | ## Community Guidelines 297 | 298 | Join our [community chat on discord](https://discord.com/channels/1099745007172329592/1109164707241271368) to engage with other contributors and maintainers. Feel free to ask questions or seek clarification on any aspects of the project. 299 | 300 | ## Licensing 301 | 302 | By contributing to this project, you agree that your contributions will be licensed under our [project's license](https://github.com/devs-in-tech/DevsInTech/blob/main/LICENSE). 303 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Using latest Node.js base image 2 | FROM node:18 3 | 4 | # Set the working directory in the container 5 | WORKDIR /usr/src/app 6 | 7 | # Copy package.json and package-lock.json 8 | COPY package*.json ./ 9 | 10 | # Install app dependencies 11 | RUN npm install 12 | # If you are building your code for production 13 | # RUN npm ci --omit=dev 14 | 15 | # Bundle app source 16 | COPY . . 17 | 18 | # Expose the PORT 19 | EXPOSE 3000 20 | 21 | # Start the server by building the app 22 | CMD [ "npm", "start" ] -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 OpenSourceHub 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DevsInTech 🚀 2 | 3 | <p align="center"><Link href="/"><img src="https://user-images.githubusercontent.com/76242769/233774732-447713dd-db8d-4c95-9c66-827ef84cbcf8.png" title="Logo" alt="Logo" height="150px"/><Link/></p> 4 | <div align="center"> 5 | <!-- <img src="https://forthebadge.com/images/badges/built-with-love.svg" /> 6 | <img src="https://forthebadge.com/images/badges/uses-brains.svg" /> 7 | <img src="https://forthebadge.com/images/badges/powered-by-responsibility.svg" /> --> 8 | <br> 9 | <img src="https://img.shields.io/github/repo-size/devs-in-tech/DevsInTech?style=for-the-badge" /> 10 | <img src="https://img.shields.io/github/issues/devs-in-tech/DevsInTech?style=for-the-badge" /> 11 | <img src="https://img.shields.io/github/issues-closed-raw/devs-in-tech/DevsInTech?style=for-the-badge" /> 12 | <img src="https://img.shields.io/github/license/devs-in-tech/DevsInTech?style=for-the-badge" /> 13 | 14 | <img src="https://img.shields.io/github/issues-pr/devs-in-tech/DevsInTech?style=for-the-badge" /> 15 | <img src="https://img.shields.io/github/contributors/devs-in-tech/DevsInTech?style=for-the-badge" /> 16 | <img src="https://img.shields.io/github/stars/devs-in-tech/DevsInTech?style=for-the-badge" /> 17 | 18 | <img src="https://img.shields.io/github/issues-pr-closed-raw/devs-in-tech/DevsInTech?style=for-the-badge" /> 19 | <img src="https://img.shields.io/github/forks/devs-in-tech/DevsInTech?style=for-the-badge" /> 20 | <img src="https://img.shields.io/github/last-commit/devs-in-tech/DevsInTech?style=for-the-badge" /> 21 | </div> 22 | <br> 23 | </div> 24 | 25 | # About Us 26 | 27 | DevsInTech is a thriving and welcoming community of developers,tech professionals,and enthusiasts who share a common passion for technology. Our mission is to promote diversity and inclusiveness in the open source community by helping individuals with improving their skills and standing out in the tech space. 28 | 29 | Check out our <a href="https://devsintech.vercel.app/">website</a> to get started! 30 | 31 | ## What do we provide?✨ 32 | 33 | DevsInTech offers a wide range of resources and opportunities for developers and tech enthusiasts to expand their skills, connect with peers, and advance their careers. Some of the key offerings include: 34 | 35 | **Workshops and Webinars:** We organize workshops and webinars led by industry experts on various topics such as programming languages, frameworks, software development methodologies, and emerging technologies. 36 | 37 | **Tech Talks and Panel Discussions:** We host engaging tech talks and panels with industry experts covering latest trends, best practices, and real-world experiences, offering valuable insights and producing inspiring conversations. 38 | 39 | **Networking and Community Events:** We facilitate networking through meetups, conferences, and events, fostering connections, idea sharing, collaboration, and professional relationships. 40 | 41 | ## Get in touch👋 42 | 43 | [![Discord](https://img.icons8.com/color/2x/discord--v2.png)](https://discord.com/invite/g7FmxB9uZp) 44 | [![Twitter](https://img.icons8.com/fluency/2x/twitter.png)](https://twitter.com/devs_in_tech) 45 | [![LinkedIn](https://img.icons8.com/fluency/2x/linkedin.png)](https://www.linkedin.com/company/devsintech-community/) 46 | 47 | ## Tech stack used to build DevsInTech⚙️ 48 | 49 | [![Next.js](https://img.shields.io/badge/next.js-%2320232a.svg?style=for-the-badge&logo=next.js&logoColor=%2361DAFB)](https://nextjs.org/) [![TailwindCSS](https://img.shields.io/badge/Tailwind_CSS-%23326ce9.svg?style=for-the-badge&logo=tailwindcss&logoColor=white)](https://tailwindcss.com/) 50 | 51 | ## Getting Started 👩‍💻 52 | 53 | > ⚠️Prerequisites 54 | > 55 | > - Before getting into it, make sure you have [pnpm](https://nodejs.org/download) installed. 56 | 57 | ### Let's jump right in🌟 58 | 59 | 1. Fork the project 60 | 2. Clone the project to run on your local machine using the following command: 61 | 62 | ```sh 63 | git clone https://github.com/<your_github_username>/DevsInTech.git 64 | ``` 65 | 66 | 3. Get into the root directory 67 | 68 | ```sh 69 | cd DevsInTech 70 | ``` 71 | 72 | 4. Install all dependencies by running 73 | 74 | ```sh 75 | pnpm install 76 | ``` 77 | 78 | 5. Create your branch 79 | 80 | ```sh 81 | git checkout -b <your_branch_name> 82 | ``` 83 | 84 | 6. Run and view the application on localhost 85 | 86 | ```sh 87 | pnpm run dev 88 | ``` 89 | 90 | 7. Make your changes 91 | 92 | 8. Stage your changes 93 | 94 | ```sh 95 | git add <filename> 96 | ``` 97 | 98 | 9. Commit your changes 99 | 100 | ```sh 101 | git commit -m "<your-commit-message>" 102 | ``` 103 | 104 | 10. Push your changes to your branch 105 | 106 | ```sh 107 | git push origin "<your_branch_name>" 108 | ``` 109 | 110 | 11. Create a Pull Request. 111 | 112 | > Click _compare across forks_ if you don't see your branch 113 | 114 | ### Setup using Docker 115 | 116 | - Enter the root directory 117 | 118 | ```sh 119 | docker build . 120 | 121 | ``` 122 | 123 | ```sh 124 | docker run -p 3000:80 <Image> 125 | ``` 126 | 127 | # Contribute 128 | 129 | We welcome contributions in our community. Learn how to start contributing, from installing the project on your device to submitting a pull request with our<Link href="https://github.com/devs-in-tech/DevsInTech/blob/main/CONTRIBUTING.md"> Contribution guide.<Link/> 130 | 131 | # Code of Conduct 132 | 133 | Check out the <Link href="https://github.com/devs-in-tech/DevsInTech/blob/main/CODE_OF_CONDUCT.md">Code of Conduct<Link/> to know an inclusive environment that respects all contributions. 134 | 135 | # License 136 | 137 | This Community is <Link href="https://github.com/devs-in-tech/DevsInTech/blob/main/LICENSE">Licensed<Link/> under MIT license. 138 | 139 | ## 🙏Support 140 | 141 | Don't forget to leave a star ⭐️ 142 | 143 | ## Thank You to Our Contributors❤️ 144 | 145 | <Link href="https://github.com/devs-in-tech/DevsInTech/graphs/contributors"> 146 | <img src="https://contrib.rocks/image?repo=devs-in-tech/DevsInTech" /> 147 | <Link/> 148 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | // build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) 2 | // ci: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) 3 | // docs: Documentation only changes 4 | // feat: A new feature 5 | // fix: A bug fix 6 | // perf: A code change that improves performance 7 | // refactor: A code change that neither fixes a bug nor adds a feature 8 | // style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) 9 | // test: Adding missing tests or correcting existing tests 10 | 11 | module.exports = { 12 | extends: ["@commitlint/config-conventional"], 13 | rules: { 14 | "body-leading-blank": [1, "always"], 15 | "body-max-line-length": [2, "always", 100], 16 | "footer-leading-blank": [1, "always"], 17 | "footer-max-line-length": [2, "always", 100], 18 | "header-max-length": [2, "always", 100], 19 | "scope-case": [2, "always", "lower-case"], 20 | "subject-case": [ 21 | 2, 22 | "never", 23 | ["sentence-case", "start-case", "pascal-case", "upper-case"], 24 | ], 25 | "subject-empty": [2, "never"], 26 | "subject-full-stop": [2, "never", "."], 27 | "type-case": [2, "always", "lower-case"], 28 | "type-empty": [2, "never"], 29 | "type-enum": [ 30 | 2, 31 | "always", 32 | [ 33 | "build", 34 | "chore", 35 | "ci", 36 | "docs", 37 | "feat", 38 | "fix", 39 | "perf", 40 | "refactor", 41 | "revert", 42 | "style", 43 | "test", 44 | "translation", 45 | "security", 46 | "changeset", 47 | ], 48 | ], 49 | }, 50 | }; 51 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { 4 | "@/*": ["./src/*"] 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | images: { 5 | domains: ["avatars.githubusercontent.com"], 6 | }, 7 | }; 8 | 9 | module.exports = nextConfig; 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "engines": { 6 | "node": ">=14.0.0", 7 | "pnpm": ">=6.0.0" 8 | }, 9 | "scripts": { 10 | "dev": "next dev", 11 | "build": "next build", 12 | "start": "next start", 13 | "lint": "next lint", 14 | "prettier": "prettier --write .", 15 | "prepare": "husky install" 16 | }, 17 | "dependencies": { 18 | "@alan-ai/alan-sdk-web": "^1.8.53", 19 | "@commitlint/cli": "^17.8.0", 20 | "@commitlint/config-conventional": "^17.6.6", 21 | "autoprefixer": "10.4.14", 22 | "axios": "^1.4.0", 23 | "eslint": "8.51.0", 24 | "eslint-config-next": "13.4.12", 25 | "framer-motion": "^10.16.4", 26 | "husky": "^8.0.3", 27 | "next": "13.5.6", 28 | "pnpm": "^8.9.2", 29 | "postcss": "8.4.24", 30 | "react": "18.2.0", 31 | "react-dom": "18.2.0", 32 | "react-icons": "^4.10.1", 33 | "react-spinners": "^0.13.8", 34 | "smoothscroll-polyfill": "^0.4.4", 35 | "tailwindcss": "3.3.2" 36 | }, 37 | "devDependencies": { 38 | "prettier": "3.0.0" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | # include packages in subfolders (e.g. apps/ and packages/) 3 | - "apps/**" 4 | - "packages/**" 5 | # if required, exclude some directories 6 | - "!**/test/**" 7 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /public/Images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/Images/logo.jpg -------------------------------------------------------------------------------- /public/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/about.png -------------------------------------------------------------------------------- /public/blog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/blog.jpg -------------------------------------------------------------------------------- /public/boy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/boy.png -------------------------------------------------------------------------------- /public/check-markf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/check-markf.png -------------------------------------------------------------------------------- /public/coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/coffee.jpg -------------------------------------------------------------------------------- /public/discord.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path fill="white" d="M 41.625 10.769531 C 37.644531 7.566406 31.347656 7.023438 31.078125 7.003906 C 30.660156 6.96875 30.261719 7.203125 30.089844 7.589844 C 30.074219 7.613281 29.9375 7.929688 29.785156 8.421875 C 32.417969 8.867188 35.652344 9.761719 38.578125 11.578125 C 39.046875 11.867188 39.191406 12.484375 38.902344 12.953125 C 38.710938 13.261719 38.386719 13.429688 38.050781 13.429688 C 37.871094 13.429688 37.6875 13.378906 37.523438 13.277344 C 32.492188 10.15625 26.210938 10 25 10 C 23.789063 10 17.503906 10.15625 12.476563 13.277344 C 12.007813 13.570313 11.390625 13.425781 11.101563 12.957031 C 10.808594 12.484375 10.953125 11.871094 11.421875 11.578125 C 14.347656 9.765625 17.582031 8.867188 20.214844 8.425781 C 20.0625 7.929688 19.925781 7.617188 19.914063 7.589844 C 19.738281 7.203125 19.34375 6.960938 18.921875 7.003906 C 18.652344 7.023438 12.355469 7.566406 8.320313 10.8125 C 6.214844 12.761719 2 24.152344 2 34 C 2 34.175781 2.046875 34.34375 2.132813 34.496094 C 5.039063 39.605469 12.972656 40.941406 14.78125 41 C 14.789063 41 14.800781 41 14.8125 41 C 15.132813 41 15.433594 40.847656 15.621094 40.589844 L 17.449219 38.074219 C 12.515625 36.800781 9.996094 34.636719 9.851563 34.507813 C 9.4375 34.144531 9.398438 33.511719 9.765625 33.097656 C 10.128906 32.683594 10.761719 32.644531 11.175781 33.007813 C 11.234375 33.0625 15.875 37 25 37 C 34.140625 37 38.78125 33.046875 38.828125 33.007813 C 39.242188 32.648438 39.871094 32.683594 40.238281 33.101563 C 40.601563 33.515625 40.5625 34.144531 40.148438 34.507813 C 40.003906 34.636719 37.484375 36.800781 32.550781 38.074219 L 34.378906 40.589844 C 34.566406 40.847656 34.867188 41 35.1875 41 C 35.199219 41 35.210938 41 35.21875 41 C 37.027344 40.941406 44.960938 39.605469 47.867188 34.496094 C 47.953125 34.34375 48 34.175781 48 34 C 48 24.152344 43.785156 12.761719 41.625 10.769531 Z M 18.5 30 C 16.566406 30 15 28.210938 15 26 C 15 23.789063 16.566406 22 18.5 22 C 20.433594 22 22 23.789063 22 26 C 22 28.210938 20.433594 30 18.5 30 Z M 31.5 30 C 29.566406 30 28 28.210938 28 26 C 28 23.789063 29.566406 22 31.5 22 C 33.433594 22 35 23.789063 35 26 C 35 28.210938 33.433594 30 31.5 30 Z"/></svg> -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/favicon.ico -------------------------------------------------------------------------------- /public/girl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/girl.jpg -------------------------------------------------------------------------------- /public/github.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><linearGradient id="rL2wppHyxHVbobwndsT6Ca" x1="4" x2="44" y1="23.508" y2="23.508" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4c4c4c"/><stop offset="1" stop-color="#343434"/></linearGradient><path fill="white" d="M24,4C12.954,4,4,12.954,4,24c0,8.887,5.801,16.411,13.82,19.016h12.36 C38.199,40.411,44,32.887,44,24C44,12.954,35.046,4,24,4z"/><path d="M30.01,41.996L30,36.198c0-0.939-0.22-1.856-0.642-2.687c5.641-1.133,8.386-4.468,8.386-10.177 c0-2.255-0.665-4.246-1.976-5.92c0.1-0.317,0.174-0.645,0.22-0.981c0.188-1.369-0.023-2.264-0.193-2.984l-0.027-0.116 c-0.186-0.796-0.409-1.364-0.418-1.388l-0.111-0.282l-0.111-0.282l-0.302-0.032l-0.303-0.032c0,0-0.199-0.021-0.501-0.021 c-0.419,0-1.04,0.042-1.627,0.241l-0.196,0.066c-0.74,0.249-1.439,0.485-2.417,1.069c-0.286,0.171-0.599,0.366-0.934,0.584 C27.334,12.881,25.705,12.69,24,12.69c-1.722,0-3.365,0.192-4.889,0.571c-0.339-0.22-0.654-0.417-0.942-0.589 c-0.978-0.584-1.677-0.819-2.417-1.069l-0.196-0.066c-0.585-0.199-1.207-0.241-1.626-0.241c-0.302,0-0.501,0.021-0.501,0.021 l-0.302,0.032l-0.3,0.031l-0.112,0.281l-0.113,0.283c-0.01,0.026-0.233,0.594-0.419,1.391l-0.027,0.115 c-0.17,0.719-0.381,1.615-0.193,2.983c0.048,0.346,0.125,0.685,0.23,1.011c-1.285,1.666-1.936,3.646-1.936,5.89 c0,5.695,2.748,9.028,8.397,10.17c-0.194,0.388-0.345,0.798-0.452,1.224c-0.197,0.067-0.378,0.112-0.538,0.137 c-0.238,0.036-0.487,0.054-0.739,0.054c-0.686,0-1.225-0.134-1.435-0.259c-0.313-0.186-0.872-0.727-1.414-1.518 c-0.463-0.675-1.185-1.558-1.992-1.927c-0.698-0.319-1.437-0.502-2.029-0.502c-0.138,0-0.265,0.01-0.376,0.028 c-0.517,0.082-0.949,0.366-1.184,0.78c-0.203,0.357-0.235,0.773-0.088,1.141c0.219,0.548,0.851,0.985,1.343,1.255 c0.242,0.133,0.765,0.619,1.07,1.109c0.229,0.368,0.335,0.63,0.482,0.992c0.087,0.215,0.183,0.449,0.313,0.732 c0.47,1.022,1.937,1.924,2.103,2.023c0.806,0.483,2.161,0.638,3.157,0.683l0.123,0.003c0,0,0.001,0,0.001,0 c0.24,0,0.57-0.023,1.004-0.071v2.613c0.002,0.529-0.537,0.649-1.25,0.638l0.547,0.184C19.395,43.572,21.645,44,24,44 c2.355,0,4.605-0.428,6.703-1.176l0.703-0.262C30.695,42.538,30.016,42.422,30.01,41.996z" opacity=".05"/><path d="M30.781,42.797c-0.406,0.047-1.281-0.109-1.281-0.795v-5.804c0-1.094-0.328-2.151-0.936-3.052 c5.915-0.957,8.679-4.093,8.679-9.812c0-2.237-0.686-4.194-2.039-5.822c0.137-0.365,0.233-0.75,0.288-1.147 c0.175-1.276-0.016-2.086-0.184-2.801l-0.027-0.116c-0.178-0.761-0.388-1.297-0.397-1.319l-0.111-0.282l-0.303-0.032 c0,0-0.178-0.019-0.449-0.019c-0.381,0-0.944,0.037-1.466,0.215l-0.196,0.066c-0.714,0.241-1.389,0.468-2.321,1.024 c-0.332,0.198-0.702,0.431-1.101,0.694C27.404,13.394,25.745,13.19,24,13.19c-1.762,0-3.435,0.205-4.979,0.61 c-0.403-0.265-0.775-0.499-1.109-0.699c-0.932-0.556-1.607-0.784-2.321-1.024l-0.196-0.066c-0.521-0.177-1.085-0.215-1.466-0.215 c-0.271,0-0.449,0.019-0.449,0.019l-0.302,0.032l-0.113,0.283c-0.009,0.022-0.219,0.558-0.397,1.319l-0.027,0.116 c-0.169,0.715-0.36,1.524-0.184,2.8c0.056,0.407,0.156,0.801,0.298,1.174c-1.327,1.62-1.999,3.567-1.999,5.795 c0,5.703,2.766,8.838,8.686,9.806c-0.395,0.59-0.671,1.255-0.813,1.964c-0.33,0.13-0.629,0.216-0.891,0.256 c-0.263,0.04-0.537,0.06-0.814,0.06c-0.69,0-1.353-0.129-1.69-0.329c-0.44-0.261-1.057-0.914-1.572-1.665 c-0.35-0.51-1.047-1.417-1.788-1.755c-0.635-0.29-1.298-0.457-1.821-0.457c-0.11,0-0.21,0.008-0.298,0.022 c-0.366,0.058-0.668,0.252-0.828,0.534c-0.128,0.224-0.149,0.483-0.059,0.708c0.179,0.448,0.842,0.85,1.119,1.002 c0.335,0.184,0.919,0.744,1.254,1.284c0.251,0.404,0.37,0.697,0.521,1.067c0.085,0.209,0.178,0.437,0.304,0.712 c0.331,0.719,1.353,1.472,1.905,1.803c0.754,0.452,2.154,0.578,2.922,0.612l0.111,0.002c0.299,0,0.8-0.045,1.495-0.135v3.177 c0,0.779-0.991,0.81-1.234,0.81c-0.031,0,0.503,0.184,0.503,0.184C19.731,43.64,21.822,44,24,44c2.178,0,4.269-0.36,6.231-1.003 C30.231,42.997,30.812,42.793,30.781,42.797z" opacity=".07"/><path fill="#fffff" d="M36.744,23.334c0-2.31-0.782-4.226-2.117-5.728c0.145-0.325,0.296-0.761,0.371-1.309 c0.172-1.25-0.031-2-0.203-2.734s-0.375-1.25-0.375-1.25s-0.922-0.094-1.703,0.172s-1.453,0.469-2.422,1.047 c-0.453,0.27-0.909,0.566-1.27,0.806C27.482,13.91,25.785,13.69,24,13.69c-1.801,0-3.513,0.221-5.067,0.652 c-0.362-0.241-0.821-0.539-1.277-0.811c-0.969-0.578-1.641-0.781-2.422-1.047s-1.703-0.172-1.703-0.172s-0.203,0.516-0.375,1.25 s-0.375,1.484-0.203,2.734c0.077,0.562,0.233,1.006,0.382,1.333c-1.31,1.493-2.078,3.397-2.078,5.704 c0,5.983,3.232,8.714,9.121,9.435c-0.687,0.726-1.148,1.656-1.303,2.691c-0.387,0.17-0.833,0.33-1.262,0.394 c-1.104,0.167-2.271,0-2.833-0.333s-1.229-1.083-1.729-1.813c-0.422-0.616-1.031-1.331-1.583-1.583 c-0.729-0.333-1.438-0.458-1.833-0.396c-0.396,0.063-0.583,0.354-0.5,0.563c0.083,0.208,0.479,0.521,0.896,0.75 c0.417,0.229,1.063,0.854,1.438,1.458c0.418,0.674,0.5,1.063,0.854,1.833c0.249,0.542,1.101,1.219,1.708,1.583 c0.521,0.313,1.562,0.491,2.688,0.542c0.389,0.018,1.308-0.096,2.083-0.206v3.75c0,0.639-0.585,1.125-1.191,1.013 C19.756,43.668,21.833,44,24,44c2.166,0,4.243-0.332,6.19-0.984C29.585,43.127,29,42.641,29,42.002v-5.804 c0-1.329-0.527-2.53-1.373-3.425C33.473,32.071,36.744,29.405,36.744,23.334z M11.239,32.727c-0.154-0.079-0.237-0.225-0.185-0.328 c0.052-0.103,0.22-0.122,0.374-0.043c0.154,0.079,0.237,0.225,0.185,0.328S11.393,32.806,11.239,32.727z M12.451,33.482 c-0.081,0.088-0.255,0.06-0.389-0.062s-0.177-0.293-0.096-0.381c0.081-0.088,0.255-0.06,0.389,0.062S12.532,33.394,12.451,33.482z M13.205,34.732c-0.102,0.072-0.275,0.005-0.386-0.15s-0.118-0.34-0.016-0.412s0.275-0.005,0.386,0.15 C13.299,34.475,13.307,34.66,13.205,34.732z M14.288,35.673c-0.069,0.112-0.265,0.117-0.437,0.012s-0.256-0.281-0.187-0.393 c0.069-0.112,0.265-0.117,0.437-0.012S14.357,35.561,14.288,35.673z M15.312,36.594c-0.213-0.026-0.371-0.159-0.353-0.297 c0.017-0.138,0.204-0.228,0.416-0.202c0.213,0.026,0.371,0.159,0.353,0.297C15.711,36.529,15.525,36.62,15.312,36.594z M16.963,36.833c-0.227-0.013-0.404-0.143-0.395-0.289c0.009-0.146,0.2-0.255,0.427-0.242c0.227,0.013,0.404,0.143,0.395,0.289 C17.381,36.738,17.19,36.846,16.963,36.833z M18.521,36.677c-0.242,0-0.438-0.126-0.438-0.281s0.196-0.281,0.438-0.281 c0.242,0,0.438,0.126,0.438,0.281S18.762,36.677,18.521,36.677z"/></svg> -------------------------------------------------------------------------------- /public/linkedin.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"> <path fill="white" d="M41,4H9C6.24,4,4,6.24,4,9v32c0,2.76,2.24,5,5,5h32c2.76,0,5-2.24,5-5V9C46,6.24,43.76,4,41,4z M17,20v19h-6V20H17z M11,14.47c0-1.4,1.2-2.47,3-2.47s2.93,1.07,3,2.47c0,1.4-1.12,2.53-3,2.53C12.2,17,11,15.87,11,14.47z M39,39h-6c0,0,0-9.26,0-10 c0-2-1-4-3.5-4.04h-0.08C27,24.96,26,27.02,26,29c0,0.91,0,10,0,10h-6V20h6v2.56c0,0,1.93-2.56,5.81-2.56 c3.97,0,7.19,2.73,7.19,8.26V39z"/></svg> -------------------------------------------------------------------------------- /public/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/logo2.png -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg> -------------------------------------------------------------------------------- /public/quiz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/quiz.jpg -------------------------------------------------------------------------------- /public/spaces.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/spaces.jpg -------------------------------------------------------------------------------- /public/tech-events.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/public/tech-events.jpg -------------------------------------------------------------------------------- /public/twitter.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="37px" height="37px"> <path fill="white" d="M28,6.937c-0.957,0.425-1.985,0.711-3.064,0.84c1.102-0.66,1.947-1.705,2.345-2.951c-1.03,0.611-2.172,1.055-3.388,1.295 c-0.973-1.037-2.359-1.685-3.893-1.685c-2.946,0-5.334,2.389-5.334,5.334c0,0.418,0.048,0.826,0.138,1.215 c-4.433-0.222-8.363-2.346-10.995-5.574C3.351,6.199,3.088,7.115,3.088,8.094c0,1.85,0.941,3.483,2.372,4.439 c-0.874-0.028-1.697-0.268-2.416-0.667c0,0.023,0,0.044,0,0.067c0,2.585,1.838,4.741,4.279,5.23 c-0.447,0.122-0.919,0.187-1.406,0.187c-0.343,0-0.678-0.034-1.003-0.095c0.679,2.119,2.649,3.662,4.983,3.705 c-1.825,1.431-4.125,2.284-6.625,2.284c-0.43,0-0.855-0.025-1.273-0.075c2.361,1.513,5.164,2.396,8.177,2.396 c9.812,0,15.176-8.128,15.176-15.177c0-0.231-0.005-0.461-0.015-0.69C26.38,8.945,27.285,8.006,28,6.937z"/></svg> -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg> -------------------------------------------------------------------------------- /src/assets/Event/API.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/src/assets/Event/API.jpg -------------------------------------------------------------------------------- /src/assets/Event/Built_for_deveelopers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/src/assets/Event/Built_for_deveelopers.jpg -------------------------------------------------------------------------------- /src/assets/Event/Devops_Kaiwalya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/src/assets/Event/Devops_Kaiwalya.png -------------------------------------------------------------------------------- /src/assets/Event/Susmita_hands_on_project.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/src/assets/Event/Susmita_hands_on_project.jpg -------------------------------------------------------------------------------- /src/assets/Event/Tapas_sir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/src/assets/Event/Tapas_sir.png -------------------------------------------------------------------------------- /src/assets/Team/Developer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devs-in-tech/DevsInTech/87f8b15e4bf0596234bdf99573611ac61ef6a205/src/assets/Team/Developer.jpg -------------------------------------------------------------------------------- /src/components/FaqAccordion.jsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import FaqAccordionItem from "./FaqAccordionItem"; 3 | import { faqs } from "./content/faq"; 4 | import Header from "./header"; 5 | 6 | const FaqAccordion = () => { 7 | const [activeAccordionIndex, setActiveAccordionIndex] = useState(null); 8 | 9 | const handleAccordionItemClick = (index) => { 10 | setActiveAccordionIndex((prevIndex) => 11 | prevIndex === index ? null : index 12 | ); 13 | }; 14 | 15 | return ( 16 | <div id="faqs" className="scroll-my-32 p-6 mt-3"> 17 | <Header name="Frequently Asked Questions" /> 18 | <div className="grid md:grid-cols-2 mt-10"> 19 | <div> 20 | {faqs && 21 | faqs.map((faq, index) => ( 22 | <FaqAccordionItem 23 | faq={faq} 24 | key={index} 25 | isActive={activeAccordionIndex === index} 26 | onAccordionItemClick={() => handleAccordionItemClick(index)} 27 | /> 28 | ))} 29 | </div> 30 | <div className="flex justify-center m-auto items-center w-72 h-72 sm:w-96 sm:h-96 md:w-full md:h-full"> 31 | <iframe 32 | src="https://embed.lottiefiles.com/animation/104452" 33 | className="w-full h-full m-auto" 34 | ></iframe> 35 | </div> 36 | </div> 37 | </div> 38 | ); 39 | }; 40 | 41 | export default FaqAccordion; 42 | -------------------------------------------------------------------------------- /src/components/FaqAccordionItem.jsx: -------------------------------------------------------------------------------- 1 | import { AnimatePresence, motion } from "framer-motion"; 2 | import { AiOutlineClose, AiOutlinePlus } from "react-icons/ai"; 3 | 4 | const FaqAccordionItem = ({ faq, isActive, onAccordionItemClick }) => { 5 | return ( 6 | <div 7 | className="text-white font-gilroy border-b-[1px] px-4 md:py-2 py-4 border-white hover:border-sky-500/100" 8 | onClick={onAccordionItemClick} 9 | > 10 | <div className="cursor-pointer flex items-start md:py-2 py-0 gap-16 justify-between hover:text-sky-500/100"> 11 | <h3 12 | className={`md:text-xl sm:text-2xl text-lg leading-none ${ 13 | isActive && "mb-1" 14 | }`} 15 | > 16 | {faq.question} 17 | </h3> 18 | <div> 19 | {isActive ? ( 20 | <AiOutlineClose className="text-2xl" /> 21 | ) : ( 22 | <AiOutlinePlus className="text-2xl" /> 23 | )} 24 | </div> 25 | </div> 26 | <AnimatePresence initial={false}> 27 | {isActive && ( 28 | <motion.p 29 | key="content" 30 | initial="collapsed" 31 | animate="open" 32 | exit="collapsed" 33 | variants={{ 34 | open: { opacity: 1, height: "auto" }, 35 | collapsed: { opacity: 0, height: 0 }, 36 | }} 37 | transition={{ duration: 0.8, ease: [0.04, 0.62, 0.23, 0.98] }} 38 | className={`text-lg sm:text-xl md:text-xl opacity-70 h-0 overflow-hidden tranisition-all ease-linear`} 39 | > 40 | {faq.answer} 41 | </motion.p> 42 | )} 43 | </AnimatePresence> 44 | </div> 45 | ); 46 | }; 47 | 48 | export default FaqAccordionItem; 49 | -------------------------------------------------------------------------------- /src/components/Footer.jsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import Link from "next/link"; 3 | import { 4 | FaDiscord, 5 | FaFacebookF, 6 | FaGithub, 7 | FaInstagram, 8 | FaLinkedinIn, 9 | FaTwitter 10 | } from "react-icons/fa"; 11 | import logo from "../../public/Images/logo.jpg"; 12 | 13 | const Footer = () => { 14 | let year = new Date().getFullYear(); 15 | 16 | return ( 17 | <footer className="bg-black bottom-0 mb-6 pt-32 font-primary justify-center"> 18 | <div className=" flex-col gap-8 justify-between content-center md:flex-row"> 19 | {/* Logo */} 20 | <div className="grid-auto "> 21 | <div className=" flex-col justify-center"> 22 | <Image 23 | src={logo} 24 | alt="DevsInTech" 25 | width={100} 26 | height={120} 27 | className="mx-auto" 28 | /> 29 | <p className="text-green-500 text-2xl text-center justify-items-center font-mono"> 30 | DevsInTech 31 | </p> 32 | </div> 33 | </div> 34 | 35 | {/* About Us */} 36 | 37 | <div className="flex flex-col justif-center"> 38 | <p className="text-center text-white text-md sm:text-lg md:text-m md:text-center"> 39 | <a href="https://devsintech.netlify.app/" className="text-green-500 font-mono">DevsInTech</a> is a 40 | thriving and welcoming community of developers, tech 41 | professionals,and enthusiasts who share a common passion for 42 | technology. We are an Open-source project available on{" "} 43 | <a href="https://github.com/devs-in-tech/DevsInTech" className="text-blue-500">GitHub</a> 44 | </p> 45 | 46 | </div> 47 | 48 | {/* COLUMNS */} 49 | <div className="m-6"> 50 | <div className="flex justify-center gap-16"> 51 | <div className="text-center font-secondary"> 52 | <p className="text-lg font-medium text-white">Community</p> 53 | 54 | <nav aria-label="Footer About Nav" className="mt-4 text-center "> 55 | <ul className="space-y-4 font-black text-base"> 56 | <li> 57 | <Link 58 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 59 | href="/" 60 | > 61 | Collaborate 62 | </Link> 63 | </li> 64 | 65 | <li> 66 | <Link 67 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 68 | href="/" 69 | > 70 | Communicate 71 | </Link> 72 | </li> 73 | 74 | <li> 75 | <Link 76 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 77 | href="/" 78 | > 79 | Courses 80 | </Link> 81 | </li> 82 | 83 | <li> 84 | <Link 85 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 86 | href="/" 87 | > 88 | Webinars 89 | </Link> 90 | </li> 91 | 92 | <li> 93 | <Link 94 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 95 | href="/" 96 | > 97 | Meetups 98 | </Link> 99 | </li> 100 | </ul> 101 | </nav> 102 | </div> 103 | <div className="text-center font-secondary"> 104 | <p className="text-lg font-medium text-white">Events</p> 105 | 106 | <nav 107 | aria-label="Footer Services Nav" 108 | className="mt-4 text-center" 109 | > 110 | <ul className="space-y-4 font-black text-base"> 111 | <li> 112 | <Link 113 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 114 | href="/" 115 | > 116 | Collaborate 117 | </Link> 118 | </li> 119 | 120 | <li> 121 | <Link 122 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 123 | href="/" 124 | > 125 | Events 126 | </Link> 127 | </li> 128 | 129 | <li> 130 | <Link 131 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 132 | href="/" 133 | > 134 | Courses 135 | </Link> 136 | </li> 137 | 138 | <li> 139 | <Link 140 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 141 | href="/" 142 | > 143 | Webinars 144 | </Link> 145 | </li> 146 | 147 | <li> 148 | <Link 149 | className="text-purple-900 transition hover:text-gray-900/75 dark:text-white dark:hover:text-white/75" 150 | href="/" 151 | > 152 | Meetups 153 | </Link> 154 | </li> 155 | </ul> 156 | </nav> 157 | </div> 158 | </div> 159 | </div> 160 | </div> 161 | <ul className="mt-6 flex justify-center text-center gap-6 md:justify-center md:gap-8"> 162 | <li> 163 | <Link 164 | href="/" 165 | rel="noreferrer" 166 | target="_blank" 167 | className="text-blue-500 transition hover:text-blue-700/75 dark:text-white dark:hover:text-gray-100/90" 168 | > 169 | <FaFacebookF size={30} /> 170 | </Link> 171 | </li> 172 | 173 | <li> 174 | <Link 175 | href="https://twitter.com/devs_in_tech" 176 | aria-label="Visit us on Twitter" 177 | title="Twitter (External Link)" 178 | rel="noopener noreferrer" 179 | target="_blank" 180 | className="text-sky-500 transition hover:text-sky-700/75 dark:text-white dark:hover:text-gray-100/90" 181 | > 182 | <FaTwitter size={30} /> 183 | </Link> 184 | </li> 185 | 186 | {/* LinkedIn Icon */} 187 | 188 | <li> 189 | <Link 190 | href="https://www.linkedin.com/company/devsintech-community/" 191 | target="_blank" 192 | aria-label="Visit us on Linkedin" 193 | title="Linkedin (External Link)" 194 | rel="noopener noreferrer" 195 | className="text-blue-800 transition hover:text-blue-900/75 dark:text-white dark:hover:text-gray-100/90" 196 | > 197 | <FaLinkedinIn size={30} /> 198 | </Link> 199 | </li> 200 | 201 | {/* Instagram icon */} 202 | 203 | <li> 204 | <Link 205 | href="/" 206 | aria-label="Visit us on Instagram" 207 | title="Instagram (External Link)" 208 | rel="noopener noreferrer" 209 | target="_blank" 210 | className="text-red-500 transition hover:text-red-700/75 dark:text-white dark:hover:text-gray-100/90" 211 | > 212 | <FaInstagram size={30} /> 213 | </Link> 214 | </li> 215 | 216 | {/* Discord icon */} 217 | 218 | <li> 219 | <Link 220 | href="https://discord.com/invite/g7FmxB9uZp" 221 | aria-label="Join with us on Discord" 222 | title="Discord (External Link)" 223 | rel="noopener noreferrer" 224 | target="_blank" 225 | className="text-blue-500 transition hover:text-blue-700/75 dark:text-white dark:hover:text-gray-100/90" 226 | > 227 | <FaDiscord size={30} /> 228 | </Link> 229 | </li> 230 | <li> 231 | <Link 232 | href="https://github.com/devs-in-tech/DevsInTech" 233 | aria-label="Join with us on GitHub" 234 | title="GitHub (External Link)" 235 | rel="noopener noreferrer" 236 | target="_blank" 237 | className="text-black transition hover:text-gray-700/75 dark:text-white dark:hover:text-gray-100/90" 238 | > 239 | <FaGithub size={30} /> 240 | </Link> 241 | </li> 242 | </ul> 243 | <div className="mt-12 mb-0"> 244 | <div className="text-center font-thin sm:flex sm:justify-center sm:text-center"> 245 | <p className="mt-4 text-xl text-white dark:text-white sm:order-first sm:mt-0"> 246 | © {year} by DevsInTech Community <span className="text-red-600">♥</span> 247 | 248 | </p> 249 | </div> 250 | </div> 251 | </footer> 252 | ); 253 | }; 254 | 255 | export default Footer; 256 | -------------------------------------------------------------------------------- /src/components/HeaderSocialMedia.jsx: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | import { FaDiscord, FaGithub, FaLinkedinIn, FaTwitter } from "react-icons/fa"; 3 | 4 | 5 | const HeaderSocialMedia = () => { 6 | return ( 7 | <> 8 | <div> 9 | <Link 10 | href="https://discord.com/invite/g7FmxB9uZp" 11 | aria-label="Join with us on Discord" 12 | title="Discord (External Link)" 13 | rel="noopener noreferrer" 14 | target="_blank" 15 | > 16 | <FaDiscord 17 | size={30} 18 | className="hover:scale-110 duration-300 hover:fill-[#5865F2] dark:fill-white transition-all duration-200 ease-in-out" 19 | // className=" hover:fill-[#5865F2] dark:fill-white transition-all duration-200 ease-in-out" 20 | /> 21 | </Link> 22 | </div> 23 | <div> 24 | <Link 25 | href="https://github.com/devs-in-tech/DevsInTech" 26 | aria-label="Visit us on Twitter" 27 | title="Github (External Link)" 28 | rel="noopener noreferrer" 29 | target="_blank" 30 | > 31 | <FaGithub 32 | size={30} 33 | className="hover:scale-110 duration-300 dark:fill-white hover:fill-[#7a7272] transition-all duration-200 ease-in-out" 34 | /> 35 | </Link> 36 | </div> 37 | <div> 38 | <Link 39 | href="https://twitter.com/devs_in_tech" 40 | aria-label="Visit us on Twitter" 41 | title="Twitter (External Link)" 42 | rel="noopener noreferrer" 43 | target="_blank" 44 | > 45 | <FaTwitter 46 | size={30} 47 | className="hover:scale-110 duration-300 dark:fill-white hover:fill-[#1DA1F2] transition-all duration-200 ease-in-out" 48 | /> 49 | </Link> 50 | </div> 51 | <div> 52 | <Link 53 | href="https://www.linkedin.com/company/devsintech-community/" 54 | target="_blank" 55 | aria-label="Visit us on Linkedin" 56 | title="Linkedin (External Link)" 57 | rel="noopener noreferrer" 58 | > 59 | <FaLinkedinIn 60 | size={30} 61 | className="hover:scale-110 duration-300 hover:fill-[#0072b1] dark:fill-white transition-all duration-200 ease-in-out" 62 | /> 63 | </Link> 64 | 65 | </div> 66 | </> 67 | ); 68 | }; 69 | export default HeaderSocialMedia; 70 | -------------------------------------------------------------------------------- /src/components/Hello.js: -------------------------------------------------------------------------------- 1 | const Hello = () => { 2 | return <div className="text-6xl">Hello from DevsInTech</div>; 3 | }; 4 | 5 | export default Hello; 6 | -------------------------------------------------------------------------------- /src/components/HeroSection/index.jsx: -------------------------------------------------------------------------------- 1 | import { FaDiscord, FaTwitter } from "react-icons/fa"; 2 | import Button from "../button"; 3 | 4 | const HeroSection = () => { 5 | return ( 6 | <div className="min-h-[calc(90vh-80px)] flex items-center bg-black"> 7 | <div className="flex items-center justify-center text-center md:items-start md:text-left md:justify-start px-7"> 8 | <div className="flex flex-col items-center md:items-start gap-8 md:w-2/3 w-full"> 9 | <h1 className="md:text-6xl sm:text-7xl text-4xl font-primary font-bold text-transparent bg-clip-text bg-gradient-to-r from-[#AF7AF2] via-[#A5F7A8] to-[#AF7AF2]"> 10 | DevsInTech Community 11 | </h1> 12 | <p className="text-left md:text-xl font-secondary sm:text-xl text-lg text-white"> 13 | Welcome to DevsInTech, an all inclusive community where developers come to learn, grow, and create together. Whether you're a beginner or an experienced developer, you'll find a place here to connect, collaborate, and build new skills. With weekly coffee chats, movie nights, expert sessions, and more, we offer endless opportunities to improve your craft and connect with like-minded individuals. Join us today and become a part of a community that's all about helping you succeed. 14 | </p> 15 | <div className="flex flex-wrap gap-8 items-center justify-center md:justify-start"> 16 | <Button 17 | name="Join Discord" 18 | url="https://discord.com/invite/g7FmxB9uZp " 19 | Icon={FaDiscord} 20 | /> 21 | <Button 22 | name="Follow on Twitter" 23 | url="https://twitter.com/devs_in_tech" 24 | Icon={FaTwitter} 25 | /> 26 | </div> 27 | </div> 28 | </div> 29 | </div> 30 | ); 31 | }; 32 | 33 | export default HeroSection; 34 | -------------------------------------------------------------------------------- /src/components/HomePage/Events_Cards/card.jsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | const Card = (props) => { 4 | return ( 5 | <> 6 | <div className="cursor-pointer transition-all duration-200 ease-in transform sm:hover:scale-105 hover:z-50 shadow-lg rounded-lg bg-[#13161B] p-5"> 7 | <Image 8 | className="rounded t-lg w-fill-available" 9 | src={props.img} 10 | alt="" 11 | /> 12 | <div className="mt-5"> 13 | <h3 className="text-xl font-bold mb-3 text-[#A5F7A8]"> 14 | {props.title} 15 | </h3> 16 | <p className="text-lg font-normal text-white ">{props.text}</p> 17 | </div> 18 | </div> 19 | </> 20 | ); 21 | }; 22 | 23 | export default Card; 24 | -------------------------------------------------------------------------------- /src/components/HomePage/Events_Cards/index.jsx: -------------------------------------------------------------------------------- 1 | import Header from "@/components/header"; 2 | import { useEffect, useState } from "react"; 3 | import data from "../../content/events"; 4 | import Card from "./card"; 5 | 6 | function Cards() { 7 | const [current, setCurrent] = useState(0); 8 | const [numVisible, setNumVisible] = useState(3); 9 | 10 | useEffect(() => { 11 | const handleResize = () => { 12 | const screenWidth = window.innerWidth; 13 | if (screenWidth < 640) { 14 | setNumVisible(1); 15 | } else if (screenWidth < 970) { 16 | setNumVisible(2); 17 | } else { 18 | setNumVisible(3); 19 | } 20 | }; 21 | 22 | if (typeof window !== "undefined") { 23 | window.addEventListener("resize", handleResize); 24 | } 25 | 26 | return () => { 27 | if (typeof window !== "undefined") { 28 | window.removeEventListener("resize", handleResize); 29 | } 30 | }; 31 | }, []); 32 | const visibleCards = data.slice(current, current + numVisible); 33 | const goToPrev = () => { 34 | if (current === 0) { 35 | setCurrent(data.length - numVisible); 36 | } else { 37 | setCurrent(current - 1); 38 | } 39 | }; 40 | const goToNext = () => { 41 | if (current === data.length - numVisible) { 42 | setCurrent(0); 43 | } else { 44 | setCurrent(current + 1); 45 | } 46 | }; 47 | return ( 48 | <main className="container mx-auto py-14 px-8" id="events"> 49 | <Header name="Latest Events In DevsInTech" /> 50 | <div className="flex items-center mb-6"> 51 | <button 52 | onClick={goToPrev} 53 | className="bg-gray-800 text-white rounded-full p-3 flex justify-center items-center mr-4" 54 | > 55 | {"<"} 56 | </button> 57 | <div className="flex justify-center gap-4"> 58 | {data && 59 | visibleCards.map((card, index) => ( 60 | <Card 61 | key={index} 62 | text={card.text} 63 | img={card.img} 64 | title={card.title} 65 | /> 66 | ))} 67 | </div> 68 | <button 69 | onClick={goToNext} 70 | className="bg-gray-800 text-white rounded-full p-3 flex justify-center items-center ml-5" 71 | > 72 | {">"} 73 | </button> 74 | </div> 75 | </main> 76 | ); 77 | } 78 | 79 | export default Cards; 80 | 81 | 82 | -------------------------------------------------------------------------------- /src/components/HomePage/Introductionvideo.jsx: -------------------------------------------------------------------------------- 1 | const Introductionvideo = ({ embedLink }) => { 2 | return ( 3 | <div className=" w-full md:w-1/2 m-auto h-96 my-14"> 4 | <iframe 5 | src={embedLink} 6 | title="YouTube video player" 7 | className="w-full h-full rounded-xl" 8 | frameBorder="0" 9 | allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 10 | allowFullScreen 11 | ></iframe> 12 | </div> 13 | ); 14 | }; 15 | 16 | export default Introductionvideo; 17 | -------------------------------------------------------------------------------- /src/components/HomePage/aboutCommunity/index.jsx: -------------------------------------------------------------------------------- 1 | import Header from "../../header"; 2 | import Introductionvideo from "../Introductionvideo"; 3 | import Stats from "../stats"; 4 | 5 | const AboutCommunity = () => { 6 | const stats = [ 7 | { 8 | name: "Members", 9 | number: 600, 10 | }, 11 | { 12 | name: "Events", 13 | number: 20, 14 | }, 15 | { 16 | name: "GitHub Stars", 17 | number: 100, 18 | }, 19 | ]; 20 | return ( 21 | <div className="px-5 sm:mt-10 mt-16" id="aboutCommunity"> 22 | <Header name="What is DevsInTech Community?" /> 23 | <p className="my-7 text-left font-secondary text-white"> 24 | At DevsInTech, we believe in the power of community. We know that when 25 | developers come together, amazing things can happen. That is why we are 26 | dedicated to creating a space where everyone feels welcome and 27 | supported. Whether you are looking for a new job, seeking advice on a 28 | tricky coding problem, or just want to meet some new friends, DevsInTech 29 | is the place for you. Our community is open to developers of all levels 30 | and backgrounds. Whether you are a beginner just starting out on your 31 | coding journey or an experienced developer looking to learn new skills, 32 | DevsInTech is the place for you. We offer a variety of events and 33 | activities designed to help you grow your skills and connect with other 34 | like-minded individuals. 35 | </p> 36 | <Stats stats={stats} /> 37 | <Introductionvideo embedLink="https://www.youtube.com/embed/d3xoKUDSY_A" /> 38 | </div> 39 | ); 40 | }; 41 | 42 | export default AboutCommunity; 43 | -------------------------------------------------------------------------------- /src/components/HomePage/index.js: -------------------------------------------------------------------------------- 1 | export { default as AboutCommunity } from "./aboutCommunity"; 2 | export { default as Stats } from "./stats"; 3 | -------------------------------------------------------------------------------- /src/components/HomePage/stats/index.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | // import img from '../../../assets/Team/Developer.jpg'; 3 | // import Image from 'next/image'; 4 | 5 | const Stats = ({ stats }) => { 6 | const [count, setCount] = useState(0); 7 | 8 | useEffect(() => { 9 | const interval = setInterval(() => { 10 | setCount((prevCount) => prevCount + 1); 11 | }, 10); 12 | 13 | return () => { 14 | clearInterval(interval); 15 | }; 16 | }, []); 17 | 18 | return ( 19 | <section className='flex flex-wrap md:space-x-6 items-center justify-center'> 20 | { 21 | stats && 22 | stats.map((data, index) => { 23 | return ( 24 | <div 25 | key={index} 26 | className="block 27 | w-[24rem] 28 | h-[10rem] 29 | p-6 30 | bg-gradient-to-r from-indigo-800 to-purple-500 31 | border 32 | border-gray-200 33 | rounded-lg 34 | shadow 35 | hover:bg-[#6B3183] 36 | items-center 37 | justify-center 38 | text-center 39 | hover:translate-y-2 40 | transition-transform 41 | mt-4 42 | mb-4 43 | "> 44 | <h2 className="mb-2 text-5xl font-bold tracking-tight text-white dark:text-white text-center"> 45 | {count > data.number ? data.number : count}+ 46 | </h2> 47 | <p className="font-bold text-gray-400 text-2xl mt-5 text-center">{data.name}</p> 48 | </div> 49 | ) 50 | }) 51 | } 52 | </section> 53 | 54 | ); 55 | }; 56 | 57 | export default Stats; 58 | -------------------------------------------------------------------------------- /src/components/Letter.jsx: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | import Image from "next/image"; 3 | import { useState } from "react"; 4 | 5 | export default function Letter() { 6 | const [email, setEmail] = useState(""); 7 | const [subscriptionSuccess, setSubscriptionSuccess] = useState(false); 8 | const [error, seterror] = useState(""); 9 | 10 | function validEmail(email) { 11 | let re = 12 | /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 13 | if (re.test(email)) return true; 14 | else return false; 15 | } 16 | 17 | const handleSubmit = (e) => { 18 | e.preventDefault(); 19 | 20 | 21 | if (email === "") { 22 | seterror("**E-mail is Required!"); 23 | } else if (!validEmail(email)) { 24 | seterror("**Enter a valid E-mail!"); 25 | } 26 | else { 27 | // Make the POST request using Axios 28 | axios 29 | .post("/api/subscribes", { email }) 30 | .then((response) => { 31 | // Handle the success response here 32 | console.log(response.data); 33 | setSubscriptionSuccess(true); 34 | }) 35 | .catch((error) => { 36 | // Handle the error here 37 | console.error(error); 38 | }); 39 | } 40 | }; 41 | 42 | const handleEmailChange = (e) => { 43 | setEmail(e.target.value); 44 | }; 45 | 46 | return ( 47 | <section className="bg-black "> 48 | <div className="py-8 px-4 mx-auto max-w-screen-xl lg:py-16 lg:px-6"> 49 | <div className="mx-auto max-w-screen-md sm:text-center"> 50 | {subscriptionSuccess ? ( 51 | <div className="bg-black-500 text-white p-4 mb-4 rounded-lg flex flex-col items-center justify-center border-2 border-solid focus:border-primary-500 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500"> 52 | <div className="w-12 h-12 mb-2 animate-bounce"> 53 | <Image 54 | src="/check-markf.png" 55 | alt="Success Icon" 56 | width={68} 57 | height={68} 58 | /> 59 | </div> 60 | <span className="text-center text-3xl mt-2"> 61 | We've sent a confirmation email 62 | <br /> 63 | Click on the link to complete your subscription to this 64 | newsletter. 65 | </span> 66 | </div> 67 | ) : ( 68 | <> 69 | <h2 className="sm:text-3xl md:text-4xl text-xl font-bold text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-green-400 to-purple-400"> 70 | Subscribe to our newsletter 71 | </h2> 72 | <p className="mx-auto mb-8 mt-4 max-w-2xl font-secondary text-white-500 md:mb-12 sm:text-xl dark:text-white"> 73 | Read articles from DevsInTech Blogs directly inside your inbox. 74 | Subscribe to the newsletter, and don't miss out. 75 | </p> 76 | <form action="#" onSubmit={handleSubmit}> 77 | <div className="items-center mx-auto mb-3 space-y-4 max-w-screen-sm sm:flex sm:space-y-0"> 78 | <div className="relative w-full"> 79 | <label 80 | htmlFor="email" 81 | className="hidden mb-2 text-sm font-medium text-gray-900 dark:text-gray-300" 82 | > 83 | Email address 84 | </label> 85 | <div className="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none "> 86 | <svg 87 | className="w-5 h-5 text-gray-500 dark:text-gray-400" 88 | fill="currentColor" 89 | viewBox="0 0 20 20" 90 | xmlns="http://www.w3.org/2000/svg" 91 | > 92 | <path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z" /> 93 | <path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z" /> 94 | </svg> 95 | </div> 96 | <input 97 | className="block p-3 pl-10 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 sm:rounded-none sm:rounded-l-lg focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500" 98 | placeholder="Enter your email" 99 | type="email" 100 | id="email" 101 | required="" 102 | value={email} 103 | onChange={handleEmailChange} 104 | /> 105 | </div> 106 | <div> 107 | <button 108 | type="submit" 109 | className="py-3 px-5 w-full text-sm font-medium text-center text-white rounded-lg border cursor-pointer bg-primary-700 border-primary-600 sm:rounded-none sm:rounded-r-lg hover:bg-primary-800 focus:ring-4 focus:ring-primary-300 dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800 bg-gradient-to-r from-indigo-800 to-purple-500" 110 | onClick={handleSubmit} 111 | > 112 | Subscribe 113 | </button> 114 | </div> 115 | </div> 116 | </form> 117 | {error === "**E-mail is Required!" && ( 118 | <small className="text-lg font-medium text-red-400">**E-mail is Required!</small> 119 | )} 120 | 121 | {error === "**Enter a valid E-mail!" && ( 122 | <small className="text-lg font-medium text-red-400">**Enter a valid E-mail!</small> 123 | )} 124 | </> 125 | )} 126 | </div> 127 | </div> 128 | </section> 129 | ); 130 | } 131 | -------------------------------------------------------------------------------- /src/components/Navbar.jsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import Link from "next/link"; 3 | import { useState } from "react"; 4 | import Logo from "../../public/logo2.png"; 5 | import HeaderSocialMedia from "./HeaderSocialMedia"; 6 | 7 | const Navbar = () => { 8 | let Links = [ 9 | { name: "Home", link: "/" }, 10 | { name: "About Us", link: "/#aboutCommunity" }, 11 | { name: "Events", link: "/events" }, 12 | { name: "Team", link: "/team" }, 13 | { name: "FAQs", link: "/#faqs" }, 14 | { name: "Contributors", link: "/Contributors" }, 15 | ]; 16 | let [open, setOpen] = useState(false); 17 | return ( 18 | <div className="w-full z-999 top-0 left-0 sticky bg-black/75 backdrop-blur-sm shadow-lg"> 19 | <div className="md:flex md:items-center md:justify-between py-4 px-7"> 20 | <div className="font-bold text-base cursor-pointer flex flex-col md:items-center font-secondary text-white"> 21 | <span> 22 | <Image className="h-14 w-14" src={Logo} alt="" /> 23 | </span> 24 | DevsInTech 25 | </div> 26 | 27 | <ul 28 | className={`md:flex md:items-center md:pb-0 px-20 md:px-0 pb-12 md:justify-center absolute md:static md:z-auto left-0 w-full transition-all duration-500 ease-in ${ 29 | open ? "top-24 bg-black" : "top-[-550px]" 30 | }`} 31 | > 32 | {Links.map((link) => ( 33 | <li 34 | key={link.name} 35 | className="md:ml-8 whitespace-nowrap text-xl md:my-0 my-7" 36 | onClick={() => setOpen(!open)} 37 | > 38 | <Link 39 | href={link.link} 40 | className="text-white font-3 hover:text-transparent bg-clip-text bg-gradient-to-r from-[#AF7AF2] via-[#A5F7A8] to-[#AF7AF2] relative transition-all duration-200 before:content-[''] before:absolute before:-bottom-2 before:left-0 before:w-0 before:h-1 before:opacity-0 before:transition-all before:duration-500 before:bg-gradient-to-r hover:before:w-full hover:before:opacity-100" 41 | > 42 | {link.name} 43 | </Link> 44 | </li> 45 | ))} 46 | <li 47 | className="md:ml-8 whitespace-nowrap text-xl md:my-0 my-7" 48 | onClick={() => setOpen(!open)} 49 | > 50 | <Link 51 | href="https://discord.com/invite/g7FmxB9uZp" 52 | className="text-white font-3 hover:text-transparent bg-clip-text bg-gradient-to-r from-[#AF7AF2] via-[#A5F7A8] to-[#AF7AF2] duration-200" 53 | > 54 | Join Us 55 | </Link> 56 | </li> 57 | <div className="md:hidden flex gap-4"> 58 | <HeaderSocialMedia width={35} height={30} /> 59 | </div> 60 | </ul> 61 | <div className="lg:flex lg:gap-5 hidden md:flex md:gap-3"> 62 | <HeaderSocialMedia width={47} height={47} /> 63 | </div> 64 | </div> 65 | <div 66 | onClick={() => setOpen(!open)} 67 | className="text-3xl absolute right-8 top-6 cursor-pointer md:hidden text-white" 68 | > 69 | <ion-icon name={open ? "close" : "menu"}></ion-icon> 70 | </div> 71 | </div> 72 | ); 73 | }; 74 | 75 | export default Navbar; 76 | -------------------------------------------------------------------------------- /src/components/ScrollToTop.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from "react"; 2 | import { FiArrowUp } from "react-icons/fi"; 3 | import smoothscroll from "smoothscroll-polyfill"; 4 | 5 | const ScrollToTop = () => { 6 | const [scroll, setScroll] = useState(false); 7 | 8 | const scrollToTop = () => { 9 | window.scrollTo({ 10 | top: 0, 11 | behavior: "smooth", 12 | }); 13 | }; 14 | 15 | useEffect(() => { 16 | smoothscroll.polyfill(); // Apply smoothscroll polyfill for older browsers 17 | const handleScroll = () => { 18 | let height = 580; 19 | const scrollCheck = 20 | document.documentElement.scrollTop || 21 | document.body.scrollTop; 22 | if (scrollCheck > height) { 23 | setScroll(true); 24 | } else { 25 | setScroll(false); 26 | } 27 | }; 28 | window.addEventListener("scroll", handleScroll); 29 | return () => { 30 | window.removeEventListener("scroll", handleScroll); 31 | }; 32 | }, []); 33 | 34 | return ( 35 | scroll && ( 36 | <div 37 | className="fixed cursor-pointer bg-[#13161B] bottom-10 left-10 p-4 rounded-full shadow-lg text-white hover:bg-gradient-to-br from-[#FF008A] to-[#6100FF] transition duration-300 ease-in-out transform hover:-translate-y-1 hover:scale-110 hover:shadow-xl" 38 | onClick={scrollToTop} 39 | > 40 | <FiArrowUp size={28} /> 41 | </div> 42 | ) 43 | ); 44 | }; 45 | 46 | export default ScrollToTop; 47 | -------------------------------------------------------------------------------- /src/components/TeamPage/index.jsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import Link from "next/link"; 3 | import { FaGithub, FaLinkedin, FaTwitter } from "react-icons/fa"; 4 | import TeamData from "../content/team"; 5 | import Header from "../header"; 6 | 7 | const TeamPage = () => { 8 | return ( 9 | <div className="mt-5"> 10 | <Header name="Team Members" /> 11 | 12 | <div className="flex flex-wrap pt-14 justify-center sm:-m-4 -mx-4 -mb-10 -mt-4"> 13 | {TeamData && 14 | TeamData.map((data, index) => ( 15 | <div key={index} className="p-4 md:w-72 w-72 sm:mb-0 mb-6"> 16 | <div className="rounded-lg h-64 overflow-hidden"> 17 | <Image 18 | alt="content" 19 | width={500} 20 | height={500} 21 | className="object-cover object-center h-full w-full rounded-full border-8 border-[#AF7AF2]" 22 | src={data.img} 23 | /> 24 | </div> 25 | <div className="relative bottom-10"> 26 | <div className="bg-[#2A1846] text-center p-2 rounded-t-2xl"> 27 | <h2 className="text-white text-2xl">{data.name}</h2> 28 | <p className="text-white">{data.position}</p> 29 | </div> 30 | 31 | <div className="bg-[#62DC67] p-3 rounded-b-2xl justify-center flex gap-3"> 32 | <Link href={data.GitHub} target="_blank"> 33 | <FaGithub size={20} /> 34 | </Link> 35 | <Link href={data.LinkedIn} target="_blank"> 36 | <FaLinkedin size={20} /> 37 | </Link> 38 | <Link href={data.Twitter} target="_blank"> 39 | <FaTwitter size={20} /> 40 | </Link> 41 | </div> 42 | </div> 43 | </div> 44 | ))} 45 | </div> 46 | </div> 47 | ); 48 | }; 49 | 50 | export default TeamPage; 51 | -------------------------------------------------------------------------------- /src/components/button/index.js: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | import { HiCheckCircle } from "react-icons/hi"; 3 | 4 | const Button = (props) => { 5 | function MyComponent() { 6 | const IconComponent = props?.Icon; 7 | return <IconComponent />; 8 | } 9 | return ( 10 | <Link target="_blank" href={props.url}> 11 | <button className="bg-[#194fbc] gap-2 flex items-center hover:bg-[#143f96] text-white font-bold py-2 px-4 rounded relative"> 12 | <span className="absolute top-0 left-0 right-0 h-1 rounded-t-md bg-gradient-to-b from-white to-[#194fbc] opacity-25"></span> 13 | <span className="whitespace-nowrap ">{props.name}</span> 14 | {props.Icon ? <MyComponent /> : <HiCheckCircle />} 15 | </button> 16 | </Link> 17 | ); 18 | }; 19 | 20 | export default Button; 21 | -------------------------------------------------------------------------------- /src/components/content/events.js: -------------------------------------------------------------------------------- 1 | import API from "../../assets/Event/API.jpg"; 2 | import Devops_Kaiwalya from "../../assets/Event/Devops_Kaiwalya.png"; 3 | import Susmita_hands_on_project from "../../assets/Event/Susmita_hands_on_project.jpg"; 4 | import TapasSir_Image from "../../assets/Event/Tapas_sir.png"; 5 | 6 | const data = [ 7 | { 8 | key: "1", 9 | img: Devops_Kaiwalya, 10 | title: "Introduction to world of Devops", 11 | text: "Dive into the exciting world of DevOps led by the briliant Kaiwalya Koparkar. Unleash your potential in the fusion of development and operations, unlocking seamless collaboration and skyrocketing your tech prowess.", 12 | }, 13 | { 14 | key: "2", 15 | img: API, 16 | title: "Deep diving into API with POSTMAN", 17 | text: "Embark on an exhilarating journey into the world of APIs with Pradumna Saraf! Join our event and master the art of API testing and automation using POSTMAN. Elevate your skills and unleash the potential of seamless integration.", 18 | }, 19 | { 20 | key: "3", 21 | img: Susmita_hands_on_project, 22 | title: "Introduction to Next.js and Tailwind CSS with hands-on project", 23 | text: "Ignite your web development journey with Next.js and Tailwind CSS! Join Susmita Dey in this hands-on project-based event where you'll unravel the magic of building modern, responsive websites. Don't miss out on this transformative learning experience!", 24 | }, 25 | { 26 | key: "4", 27 | img: TapasSir_Image, 28 | title: "Exclusive Session", 29 | text: "Unleash your speaking potential! Join Tapas Adhikary for an exclusive event delving into the art of public speaking, call for proposals, and the endless benefits and opportunities they bring. Don't miss your chance to shine on stage!", 30 | }, 31 | ]; 32 | 33 | export default data; 34 | -------------------------------------------------------------------------------- /src/components/content/faq.js: -------------------------------------------------------------------------------- 1 | export const faqs = [ 2 | { 3 | question: "How can I join DevsInTech Community?", 4 | answer: 5 | "DevsInTech Community is a Open Source community where people join and learn together. You can join the community via the Discord link or through github.", 6 | }, 7 | { 8 | question: "Is it a Paid Community?", 9 | answer: 10 | "No, DevsInTech is a free community. To join, simply join our Discord server and start engaging with fellow developers.", 11 | }, 12 | { 13 | question: "Does Events Occur often?", 14 | answer: 15 | "Yes, we have frequent events at DevsInTech. We hold weekly coffee chats, monthly blogging competitions, and are planning to launch expert sessions soon. Keep an eye on our Discord announcements for the latest updates.", 16 | }, 17 | { 18 | question: "Who are the founders of DevsInTech Community?", 19 | answer: 20 | "DevsInTech was founded by Susmita Dey, a CS undergrad student and web developer at Digitea. She is also a technical writer and MLHacks mentor and judge.", 21 | }, 22 | { 23 | question: "How to Actively Contribute into DevsInTech?", 24 | answer: 25 | "To actively contribute to DevsInTech, join our Discord community and start engaging with fellow members. Apply for volunteer roles such as designer, developer, or content creator and manager. We are always looking for enthusiastic individuals to join our team.", 26 | }, 27 | { 28 | question: "Will I receive any perks or advantage in Joining DevsInTech?", 29 | answer: 30 | "Yes, by participating in our monthly blogging competitions with the tag #devsintech on Hashnode, you have a chance to win exclusive perks and swag.", 31 | }, 32 | { 33 | question: "How to be a part of DevsInTech Community?", 34 | answer: 35 | "To be a part of DevsInTech Community, join our Discord server by following the link on our website and start engaging with our members.", 36 | }, 37 | ]; 38 | -------------------------------------------------------------------------------- /src/components/content/team.js: -------------------------------------------------------------------------------- 1 | import DeveloperImage from "../../assets/Team/Developer.jpg"; 2 | 3 | const TeamData = [ 4 | { 5 | img: DeveloperImage, 6 | name: "John Doi", 7 | position: " Tech Team", 8 | GitHub: "https://github.com/AbhiPatel10", 9 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 10 | Twitter: "https://twitter.com/AbhiPatel0001", 11 | }, 12 | { 13 | img: DeveloperImage, 14 | name: "John Doi", 15 | position: " Tech Team", 16 | GitHub: "https://github.com/AbhiPatel10", 17 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 18 | Twitter: "https://twitter.com/AbhiPatel0001", 19 | }, 20 | { 21 | img: DeveloperImage, 22 | name: "John Doi", 23 | position: " Tech Team", 24 | GitHub: "https://github.com/AbhiPatel10", 25 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 26 | Twitter: "https://twitter.com/AbhiPatel0001", 27 | }, 28 | { 29 | img: DeveloperImage, 30 | name: "John Doi", 31 | position: " Tech Team", 32 | GitHub: "https://github.com/AbhiPatel10", 33 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 34 | Twitter: "https://twitter.com/AbhiPatel0001", 35 | }, 36 | { 37 | img: DeveloperImage, 38 | name: "John Doi", 39 | position: " Tech Team", 40 | GitHub: "https://github.com/AbhiPatel10", 41 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 42 | Twitter: "https://twitter.com/AbhiPatel0001", 43 | }, 44 | { 45 | img: DeveloperImage, 46 | name: "John Doi", 47 | position: " Tech Team", 48 | GitHub: "https://github.com/AbhiPatel10", 49 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 50 | Twitter: "https://twitter.com/AbhiPatel0001", 51 | }, 52 | { 53 | img: DeveloperImage, 54 | name: "John Doi", 55 | position: " Tech Team", 56 | GitHub: "https://github.com/AbhiPatel10", 57 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 58 | Twitter: "https://twitter.com/AbhiPatel0001", 59 | }, 60 | { 61 | img: DeveloperImage, 62 | name: "John Doi", 63 | position: " Tech Team", 64 | GitHub: "https://github.com/AbhiPatel10", 65 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 66 | Twitter: "https://twitter.com/AbhiPatel0001", 67 | }, 68 | { 69 | img: DeveloperImage, 70 | name: "John Doi", 71 | position: " Tech Team", 72 | GitHub: "https://github.com/AbhiPatel10", 73 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 74 | Twitter: "https://twitter.com/AbhiPatel0001", 75 | }, 76 | { 77 | img: DeveloperImage, 78 | name: "John Doi", 79 | position: " Tech Team", 80 | GitHub: "https://github.com/AbhiPatel10", 81 | LinkedIn: "https://www.linkedin.com/in/abhipatel001/", 82 | Twitter: "https://twitter.com/AbhiPatel0001", 83 | }, 84 | ]; 85 | 86 | export default TeamData; 87 | -------------------------------------------------------------------------------- /src/components/header/index.js: -------------------------------------------------------------------------------- 1 | const Header = ({ name }) => { 2 | return ( 3 | <> 4 | <div className="w-full flex justify-center text-center mb-16"> 5 | <h1 className="sm:text-3xl md:text-4xl text-xl font-bold text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-green-400 to-purple-400"> 6 | {name} 7 | </h1> 8 | </div> 9 | </> 10 | ); 11 | }; 12 | 13 | export default Header; 14 | -------------------------------------------------------------------------------- /src/components/iconbutton/index.js: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import Link from "next/link"; 3 | 4 | const IconButton = (props) => { 5 | return ( 6 | <Link 7 | href={props.url} 8 | target="_blank" 9 | rel="noopener noreferrer" 10 | legacyBehavior 11 | > 12 | <Image 13 | src={props.src} 14 | width={props.width} 15 | height={props.height} 16 | alt={props.alt} 17 | className={props.className} 18 | /> 19 | </Link> 20 | ); 21 | }; 22 | 23 | export default IconButton; 24 | -------------------------------------------------------------------------------- /src/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as Hello } from "./Hello"; 2 | export { default as HeroSection } from "./HeroSection"; 3 | export { default as AboutCommunity } from "./HomePage/aboutCommunity"; 4 | export { default as stats } from "./HomePage/stats"; 5 | export { default as header } from "./header"; 6 | -------------------------------------------------------------------------------- /src/components/revealingsoon/index.js: -------------------------------------------------------------------------------- 1 | const Revealingsoon = () => { 2 | return ( 3 | <> 4 | <div class="relative w-full flex items-center justify-center h-screen top-[-100px] text-center"> 5 | <div class="flex flex-col justify-center text-white w-full "> 6 | <h1 class="text-5xl"> 7 | Revealing <b>SOON!</b> 8 | </h1> 9 | <p className="mt-3">Stay tuned!!!</p> 10 | 11 | <div class="mt-10 mb-5"> 12 | <div class="shadow w-full bg-white mt-2 max-w-2xl mx-auto rounded-full"> 13 | <div 14 | class="rounded-full bg-indigo-600 text-xs leading-none text-center text-white py-1" 15 | style={{ width: "75%" }} 16 | > 17 | 75% 18 | </div> 19 | </div> 20 | </div> 21 | </div> 22 | </div> 23 | </> 24 | ); 25 | }; 26 | 27 | export default Revealingsoon; 28 | -------------------------------------------------------------------------------- /src/components/testimonial.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | import Header from "./header"; 3 | import Image from "next/image"; 4 | 5 | const testimonials = [ 6 | { 7 | id: 1, 8 | name: "Aarav Patel", 9 | text: "DevsInTech's collaborative community has accelerated my learning and inspired me to tackle ambitious projects, thanks to the talented and supportive developers always ready to lend a hand.", 10 | image: "boy.png", 11 | }, 12 | { 13 | id: 2, 14 | name: "Aanya Gupta", 15 | text: "Through expert sessions at DevsInTech, I've gained valuable knowledge from industry professionals, opening doors to exciting career opportunities and enhancing my personal and professional growth.", 16 | image: "girl.jpg", 17 | }, 18 | { 19 | id: 3, 20 | name: "Rohan Sharma", 21 | text: "DevsInTech's code reviews have significantly improved the quality of my work, thanks to constructive feedback from experienced developers, helping me refine my coding skills and develop a more efficient style.", 22 | image: "boy.png", 23 | }, 24 | { 25 | id: 4, 26 | name: "Aditi Verma", 27 | text: "DevsInTech's hackathons have fueled my problem-solving abilities and creativity, providing an exhilarating platform to collaborate with talented developers, innovate, and showcase my skills.", 28 | image: "girl.jpg", 29 | }, 30 | { 31 | id: 5, 32 | name: "Aryan Desai", 33 | text: "The mentorship program at DevsInTech has transformed my development journey, with a seasoned developer guiding me, setting goals, and offering personalized support, accelerating my growth and fostering a sense of community.", 34 | image: "boy.png", 35 | }, 36 | { 37 | id: 6, 38 | name: "Mike Smilga", 39 | text: "DevsInTech's inclusive and supportive community has been a breath of fresh air for me as a beginner developer. The encouragement and guidance I've received from fellow community members have boosted my confidence and helped me overcome obstacles.", 40 | image: "boy.png", 41 | }, 42 | { 43 | id: 7, 44 | name: "Richard Paul", 45 | text: "As an experienced developer, DevsInTech has provided me with a platform to share my knowledge and give back to the community. The opportunity to mentor aspiring developers and contribute to the growth of others has been fulfilling and rewarding..", 46 | image: "boy.png", 47 | }, 48 | ]; 49 | 50 | const Testimonial = ({ testimonial }) => ( 51 | <div className=" bg-black p-4 rounded-xl delay-150 hover:-translate-y-1 duration-300 hover:scale-110 md:m-6 m-2 mt-8 h-96 w-auto border-2 border-white text-lg text-center justify-center items-center"> 52 | <p className="text-white">{testimonial.text}</p> 53 | <div className="flex justify-center mt-8"> 54 | <div className="flex-shrink-0"> 55 | <Image 56 | className="w-12 h-12 rounded-full" 57 | src={`/${testimonial.image}`} 58 | alt={testimonial.name} 59 | width={48} 60 | height={48} 61 | /> 62 | </div> 63 | <div className="ml-4"> 64 | <div className="text-gray-500 font-medium">{testimonial.name}</div> 65 | </div> 66 | </div> 67 | </div> 68 | ); 69 | 70 | const TestimonialCarousel = () => { 71 | const [current, setCurrent] = useState(0); 72 | const [numVisible, setNumVisible] = useState(3); 73 | const [intervalId, setIntervalId] = useState(null); 74 | useEffect(() => { 75 | const handleResize = () => { 76 | const screenWidth = window.innerWidth; 77 | if (screenWidth <= 700) { 78 | setNumVisible(1); 79 | } else if (screenWidth >= 700 && screenWidth < 1024) { 80 | setNumVisible(2); 81 | } else if (screenWidth >= 1024 && screenWidth < 1300) { 82 | setNumVisible(2); 83 | } else { 84 | setNumVisible(3); 85 | } 86 | }; 87 | 88 | const startAutoCarousel = () => { 89 | const id = setInterval(() => { 90 | goToNext(); 91 | }, 5000); 92 | 93 | return id; 94 | }; 95 | 96 | if (typeof window !== "undefined") { 97 | window.addEventListener("resize", handleResize); 98 | } 99 | const intervalId = startAutoCarousel(); 100 | return () => clearInterval(intervalId); 101 | }, []); 102 | 103 | const visibleTestimonials = testimonials.slice(current, current + numVisible); 104 | 105 | const goToPrev = () => { 106 | setCurrent((prev) => { 107 | if (prev === 0) { 108 | return testimonials.length - numVisible; 109 | } else { 110 | return prev - 1; 111 | } 112 | }); 113 | }; 114 | 115 | const goToNext = () => { 116 | setCurrent((prev) => { 117 | if (prev + numVisible === testimonials.length) { 118 | return 0; 119 | } else { 120 | return prev + 1; 121 | } 122 | }); 123 | }; 124 | 125 | return ( 126 | <div className="py-10"> 127 | <Header name="What Our Members Say About Us" /> 128 | <div className="flex items-center justify-center"> 129 | <button 130 | onClick={goToPrev} 131 | className="bg-gray-800 text-white rounded-full p-3 flex justify-center items-center mr-2" 132 | > 133 | {"<"} 134 | </button> 135 | <div className="flex items-center mb-6 mx-auto"> 136 | {visibleTestimonials.map((testimonial) => ( 137 | <div key={testimonial.id}> 138 | <Testimonial testimonial={testimonial} /> 139 | </div> 140 | ))} 141 | </div> 142 | <button 143 | onClick={goToNext} 144 | className="bg-gray-800 text-white rounded-full p-3 flex justify-center items-center mr-2" 145 | > 146 | {">"} 147 | </button> 148 | </div> 149 | <div className="flex justify-center items-center gap-4"> 150 | {/* <button 151 | onClick={goToPrev} 152 | className="bg-gray-800 text-white rounded-full p-3 flex justify-center items-center mr-2" 153 | > 154 | {"<"} 155 | </button> */} 156 | <div className="flex justify-center"> 157 | {testimonials.map((testimonial, index) => ( 158 | <div 159 | key={testimonial.id} 160 | className={`h-2 w-2 rounded-full mx-2 bg-gray-400 ${ 161 | current === index ? "bg-gray-200" : "bg-gray-900" 162 | }`} 163 | onClick={() => setCurrent(index)} 164 | ></div> 165 | ))} 166 | </div> 167 | {/* <button 168 | onClick={goToNext} 169 | className="bg-gray-800 text-white rounded-full p-3 flex justify-center items-center mr-2" 170 | > 171 | {">"} 172 | </button> */} 173 | </div> 174 | </div> 175 | ); 176 | }; 177 | 178 | export default TestimonialCarousel; 179 | -------------------------------------------------------------------------------- /src/pages/404.js: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | 3 | export default function custom404() { 4 | return ( 5 | <div> 6 | <div className="w-9/12 m-auto py-16 min-h-screen flex items-center justify-center"> 7 | <div className="shadow overflow-hidden sm:rounded-lg pb-8"> 8 | <div className="border-t border-gray-200 text-center pt-8"> 9 | <h1 className="text-9xl font-bold text-white">404</h1> 10 | <h1 className="text-6xl font-medium py-8 text-white"> 11 | Oops! Page not found 12 | </h1> 13 | <p className="text-2xl pb-8 px-12 font-medium text-gray-300"> 14 | Oops! The page you are looking for does not exist. It might have 15 | been moved or deleted. 16 | </p> 17 | <Link 18 | href="/" 19 | className="bg-gradient-to-r from-purple-400 to-blue-500 hover:from-indigo-500 20 | hover:to-purple-500 text-white font-semibold px-6 py-3 mt-5 rounded-md mr-6" 21 | > 22 | Go to HOME 23 | </Link> 24 | </div> 25 | </div> 26 | </div> 27 | </div> 28 | ); 29 | } 30 | -------------------------------------------------------------------------------- /src/pages/Contributors.js: -------------------------------------------------------------------------------- 1 | import Footer from "@/components/Footer"; 2 | import Header from "@/components/header"; 3 | import Navbar from "@/components/Navbar"; 4 | import axios from "axios"; 5 | import Image from "next/image"; 6 | import { useEffect, useState } from "react"; 7 | import { BsGithub } from "react-icons/bs"; 8 | import HashLoader from "react-spinners/HashLoader"; 9 | 10 | const Contributors = () => { 11 | const [contributors, setContributors] = useState([]); 12 | const [loading, setLoading] = useState(false); 13 | 14 | useEffect(() => { 15 | const fetchData = async () => { 16 | try { 17 | setLoading(true); 18 | const response = await axios.get( 19 | "https://api.github.com/repos/devs-in-tech/DevsInTech/contributors" 20 | ); 21 | const data = response.data; 22 | setContributors(data); 23 | setLoading(false); 24 | } catch (error) { 25 | console.error(error); 26 | } 27 | }; 28 | 29 | fetchData(); 30 | }, []); 31 | 32 | return ( 33 | <> 34 | <Navbar /> 35 | <Header name="Our Contributors" /> 36 | {loading ? ( 37 | <div className="w-full h-96 flex justify-center items-center"> 38 | <HashLoader 39 | loading={loading} 40 | aria-label="Loading Spinner" 41 | data-testid="loader" 42 | color={"#8d06d6"} 43 | size={68} 44 | /> 45 | </div> 46 | ) : ( 47 | <div className="contributor-container relative z-[1] flex justify-center items-center flex-wrap p-[1em]"> 48 | {contributors.map((i) => ( 49 | <div 50 | className="contributor-card relative w-[300px] h-[400px] shadow-[0_15px_35px_rgba(0,0,0,0.9)] flex justify-center items-center flex-col backdrop-blur-2xl bg-clip-padding m-[1em] rounded-[15px] bg-gray-900 cursor-auto" 51 | key={i.login} 52 | > 53 | <div className="contributor-content relative flex justify-center items-center flex-col opacity-50 transition duration-[0.5s]"> 54 | <div className="relative w-[150px] h-[150px] overflow-hidden rounded-[50%] border-[10px] border-solid border-[rgba(0,0,0,0.25)]"> 55 | <Image 56 | className="absolute w-full h-full object-cover left-0 top-0" 57 | src={i.avatar_url} 58 | alt={i.login} 59 | width={400} 60 | height={400} 61 | /> 62 | </div> 63 | 64 | <div className="contributor-details"> 65 | <h3 className="text-white uppercase tracking-[2px] font-medium text-lg text-center leading-[1.1em] mt-5 mb-2.5 mx-0"> 66 | {i.login} 67 | <br /> 68 | <span className="text-xs font-light"> 69 | Commits: {i.contributions} 70 | </span> 71 | </h3> 72 | </div> 73 | </div> 74 | 75 | <ul className="contributor-social-icons absolute flex justify-center items-center bottom-[50px]"> 76 | <li className="translate-y-10 opacity-0 transition duration-[0.5s] mx-2.5 my-0"> 77 | <a 78 | href={i.html_url} 79 | target="_blank" 80 | rel="noopener noreferrer" 81 | className="text-2xl text-white" 82 | > 83 | <BsGithub /> 84 | </a> 85 | </li> 86 | </ul> 87 | </div> 88 | ))} 89 | </div> 90 | )} 91 | 92 | <Footer /> 93 | </> 94 | ); 95 | }; 96 | 97 | export default Contributors; 98 | -------------------------------------------------------------------------------- /src/pages/_app.js: -------------------------------------------------------------------------------- 1 | import "@/styles/globals.css"; 2 | 3 | export default function App({ Component, pageProps }) { 4 | return ( 5 | <> 6 | <Component {...pageProps} /> 7 | </> 8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /src/pages/_document.js: -------------------------------------------------------------------------------- 1 | // pages/_document.js 2 | import Document, { Head, Html, Main, NextScript } from "next/document"; 3 | 4 | class MyDocument extends Document { 5 | render() { 6 | return ( 7 | <Html> 8 | <Head> 9 | <link 10 | href="https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;700&display=swap" 11 | rel="stylesheet" 12 | /> 13 | <link 14 | href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" 15 | rel="stylesheet" 16 | /> 17 | <script 18 | type="text/javascript" 19 | src="https://studio.alan.app/web/lib/alan_lib.min.js" 20 | async 21 | ></script> 22 | </Head> 23 | <body> 24 | <Main /> 25 | <NextScript /> 26 | </body> 27 | </Html> 28 | ); 29 | } 30 | } 31 | 32 | export default MyDocument; 33 | -------------------------------------------------------------------------------- /src/pages/about/index.js: -------------------------------------------------------------------------------- 1 | import { Hello } from "../../components"; 2 | const About = () => { 3 | return ( 4 | <> 5 | <Hello /> 6 | </> 7 | ); 8 | }; 9 | 10 | export default About; 11 | -------------------------------------------------------------------------------- /src/pages/alan.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from "react"; 2 | 3 | const AlanAIProjectKey = `${process.env.NEXT_PUBLIC_ALAN_AI_CHATBOT}/stage`; 4 | 5 | function AlanAIComponent() { 6 | useEffect(() => { 7 | // Load Alan AI script asynchronously when the component mounts on the client side 8 | // const additionalStyles = ` 9 | // .alanBtn-root { 10 | // right: 2rem !important; 11 | // bottom: 2rem !important; 12 | // } 13 | // `; 14 | 15 | // const styleTag = document.createElement("style"); 16 | // styleTag.innerHTML = additionalStyles; 17 | // document.head.appendChild(styleTag); 18 | 19 | // Initialize Alan AI and handle commands once the script is loaded 20 | /* global alanBtn */ 21 | const alanBtnInstance = alanBtn({ 22 | key: AlanAIProjectKey, 23 | onCommand: function (commandData) { 24 | if (commandData && commandData.command === "openURL") { 25 | if (commandData.target === "_blank") { 26 | window.open( 27 | commandData.url, 28 | "_newtab" + Math.floor(Math.random() * 999999) 29 | ); 30 | } else { 31 | window.location.href = commandData.url; 32 | } 33 | } 34 | }, 35 | }); 36 | 37 | // Clean up the Alan AI instance when the component unmounts 38 | return () => { 39 | alanBtnInstance.deactivate(); 40 | }; 41 | }, []); 42 | 43 | return ( 44 | <div 45 | id="alan-btn" 46 | className="fixed cursor-pointer bg-[#13161B] bottom-16 left-10 p-4" 47 | ></div> 48 | ); // This div will serve as the mount point for the Alan AI button 49 | } 50 | 51 | export default AlanAIComponent; 52 | -------------------------------------------------------------------------------- /src/pages/api/hello.js: -------------------------------------------------------------------------------- 1 | // Next.js API route support: https://nextjs.org/docs/api-routes/introduction 2 | 3 | export default function handler(req, res) { 4 | res.status(200).json({ name: "John Doe" }); 5 | } 6 | -------------------------------------------------------------------------------- /src/pages/api/subscribes.js: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | 3 | export default async function handler(req, res) { 4 | try { 5 | const { email } = req.body; 6 | const publicationId = process.env.NEXT_PUBLIC_PUBLICATION_ID; 7 | 8 | // Make the API call to subscribe to the newsletter 9 | const response = await axios.post( 10 | "https://devsintech.hashnode.dev/api/newsletter/subscribe", 11 | { 12 | email, 13 | publicationId, 14 | } 15 | ); 16 | 17 | // Handle the response from the API call 18 | if (response.status === 200) { 19 | res 20 | .status(200) 21 | .json({ message: "Subscribed to the newsletter successfully!" }); 22 | } else { 23 | res.status(500).json({ error: "Error subscribing to the newsletter" }); 24 | } 25 | } catch (error) { 26 | res.status(500).json({ error: "Error subscribing to the newsletter" }); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/pages/events/blogathon/index.jsx: -------------------------------------------------------------------------------- 1 | import Footer from "@/components/Footer"; 2 | import Navbar from "@/components/Navbar"; 3 | import ScrollToTop from "@/components/ScrollToTop"; 4 | 5 | const BlogAThons = () => { 6 | return ( 7 | <> 8 | <Navbar /> 9 | <div style={{ marginTop: 100, color: 'white', alignItems: 'center' }}> 10 | <h1 className="text-5xl font-bold text-center text-blue-500">Blog-a-thons</h1> 11 | <div className='w-[100%] flex flex-wrap mx-auto justify-center items-center mt-26 py-8 mb-5 max-w-screen-2xl format-card'> 12 | <div className="md:w-2/3 ml-5" data-aos="fade-left" data-aos-duration="500"> 13 | <p className="team-description font-bold text-2xl text-center"> 14 | Join our DevsInTech community for an array of exciting online tech events. Attend insightful webinars featuring industry experts, dive deep into practical workshops to enhance your skills, and unleash your creativity in our competitive hackathons. Engage with fellow developers, expand your network, and stay updated on cutting-edge technologies and industry trends. 15 | </p> 16 | </div> 17 | </div> 18 | </div> 19 | <ScrollToTop /> 20 | <Footer /> 21 | </> 22 | ); 23 | }; 24 | 25 | export default BlogAThons; -------------------------------------------------------------------------------- /src/pages/events/coffee/index.jsx: -------------------------------------------------------------------------------- 1 | import Footer from "@/components/Footer"; 2 | import Navbar from "@/components/Navbar"; 3 | import ScrollToTop from "@/components/ScrollToTop"; 4 | 5 | const BlogAThons = () => { 6 | return ( 7 | <> 8 | <Navbar /> 9 | <div style={{ marginTop: 100, color: 'white', alignItems: 'center' }}> 10 | <h1 className="text-5xl font-bold text-center text-blue-500">Coffee Chats</h1> 11 | <div className='w-[100%] flex flex-wrap mx-auto justify-center items-center mt-26 py-8 mb-5 max-w-screen-2xl format-card'> 12 | <div className="md:w-2/3 ml-5" data-aos="fade-left" data-aos-duration="500"> 13 | <p className="team-description font-bold text-2xl text-center"> 14 | Join our DevsInTech community for an array of exciting online tech events. Attend insightful webinars featuring industry experts, dive deep into practical workshops to enhance your skills, and unleash your creativity in our competitive hackathons. Engage with fellow developers, expand your network, and stay updated on cutting-edge technologies and industry trends. 15 | </p> 16 | </div> 17 | </div> 18 | </div> 19 | <ScrollToTop /> 20 | <Footer /> 21 | </> 22 | ); 23 | }; 24 | 25 | export default BlogAThons; -------------------------------------------------------------------------------- /src/pages/events/index.jsx: -------------------------------------------------------------------------------- 1 | import Footer from "@/components/Footer"; 2 | import Header from "@/components/header"; 3 | import Card from "@/components/HomePage/Events_Cards/card"; 4 | import Navbar from "@/components/Navbar"; 5 | import ScrollToTop from "@/components/ScrollToTop"; 6 | import { useState } from "react"; 7 | import EventData from "../../components/content/events"; 8 | 9 | const Events = () => { 10 | const [searchInput, setSearchInput] = useState(""); 11 | 12 | 13 | const [Data,] = useState(EventData); 14 | const FilteredData = Data.filter((event) => 15 | event.title.toLowerCase().includes(searchInput.toLowerCase()) 16 | ); 17 | 18 | return ( 19 | <> 20 | <Navbar /> 21 | <Header name="Explore our events" /> 22 | <form> 23 | <label 24 | htmlFor="default-search" 25 | className="mb-2 text-sm font-medium text-gray-900 sr-only dark:text-white" 26 | > 27 | Search 28 | </label> 29 | <div className="relative w-[87vw] mx-auto mb-[8rem] mr-[7.5rem] mt-[3rem] "> 30 | <div className="absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none"> 31 | <svg 32 | className="w-4 h-4 text-gray-500 dark:text-gray-400" 33 | aria-hidden="true" 34 | xmlns="http://www.w3.org/2000/svg" 35 | fill="none" 36 | viewBox="0 0 20 20" 37 | > 38 | <path 39 | stroke="currentColor" 40 | strokeLinecap="round" 41 | strokeLinejoin="round" 42 | strokeWidth={2} 43 | d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z" 44 | /> 45 | </svg> 46 | </div> 47 | <input 48 | type="search" 49 | id="default-search" 50 | className="block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" 51 | placeholder="Search Events" 52 | value={searchInput} 53 | onChange={(e) => setSearchInput(e.target.value)} 54 | required="" 55 | /> 56 | 57 | <button 58 | type="submit" 59 | className="text-white absolute right-2.5 top-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800" 60 | > 61 | Search 62 | </button> 63 | </div> 64 | </form> 65 | 66 | <div className="grid md:grid-cols-2 my-10 lg:grid-cols-3 gap-6 max-w-xs md:max-w-full m-auto"> 67 | {FilteredData.map((event, index) => ( 68 | <Card 69 | key={index} 70 | text={event.text} 71 | img={event.img} 72 | title={event.title} 73 | /> 74 | ))} 75 | </div> 76 | 77 | <ScrollToTop /> 78 | <Footer /> 79 | </> 80 | ); 81 | }; 82 | 83 | export default Events; 84 | -------------------------------------------------------------------------------- /src/pages/events/quiz/index.jsx: -------------------------------------------------------------------------------- 1 | import Footer from "@/components/Footer"; 2 | import Navbar from "@/components/Navbar"; 3 | import ScrollToTop from "@/components/ScrollToTop"; 4 | 5 | const Quiz = () => { 6 | return ( 7 | <> 8 | <Navbar /> 9 | <div style={{ marginTop: 100, color: 'white', alignItems: 'center' }}> 10 | <h1 className="text-5xl font-bold text-center text-blue-500">Quiz Nights</h1> 11 | <div className='w-[100%] flex flex-wrap mx-auto justify-center items-center mt-26 py-8 mb-5 max-w-screen-2xl format-card'> 12 | <div className="md:w-2/3 ml-5" data-aos="fade-left" data-aos-duration="500"> 13 | <p className="team-description font-bold text-2xl text-center"> 14 | Join our DevsInTech community for an array of exciting online tech events. Attend insightful webinars featuring industry experts, dive deep into practical workshops to enhance your skills, and unleash your creativity in our competitive hackathons. Engage with fellow developers, expand your network, and stay updated on cutting-edge technologies and industry trends. 15 | </p> 16 | </div> 17 | </div> 18 | </div> 19 | <ScrollToTop /> 20 | <Footer /> 21 | </> 22 | ); 23 | }; 24 | 25 | export default Quiz; -------------------------------------------------------------------------------- /src/pages/events/spaces/index.jsx: -------------------------------------------------------------------------------- 1 | import Footer from "@/components/Footer"; 2 | import Navbar from "@/components/Navbar"; 3 | import ScrollToTop from "@/components/ScrollToTop"; 4 | 5 | const Spaces = () => { 6 | return ( 7 | <> 8 | <Navbar /> 9 | <div style={{ marginTop: 100, color: 'white', alignItems: 'center' }}> 10 | <h1 className="text-5xl font-bold text-center text-blue-500">Twitter Spaces</h1> 11 | <div className='w-[100%] flex flex-wrap mx-auto justify-center items-center mt-26 py-8 mb-5 max-w-screen-2xl format-card'> 12 | <div className="md:w-2/3 ml-5" data-aos="fade-left" data-aos-duration="500"> 13 | <p className="team-description font-bold text-2xl text-center"> 14 | Join our DevsInTech community for an array of exciting online tech events. Attend insightful webinars featuring industry experts, dive deep into practical workshops to enhance your skills, and unleash your creativity in our competitive hackathons. Engage with fellow developers, expand your network, and stay updated on cutting-edge technologies and industry trends. 15 | </p> 16 | </div> 17 | </div> 18 | </div> 19 | <ScrollToTop /> 20 | <Footer /> 21 | </> 22 | ); 23 | }; 24 | 25 | export default Spaces; -------------------------------------------------------------------------------- /src/pages/events/tech/index.jsx: -------------------------------------------------------------------------------- 1 | import Footer from "@/components/Footer"; 2 | import Card from "@/components/HomePage/Events_Cards/card"; 3 | import Navbar from "@/components/Navbar"; 4 | import ScrollToTop from "@/components/ScrollToTop"; 5 | import data from "../../../components/content/events"; 6 | 7 | const TechEvents = () => { 8 | return ( 9 | <> 10 | <Navbar /> 11 | <div style={{ marginTop: 100, color: 'white', alignItems: 'center' }}> 12 | <h1 className="text-5xl font-bold text-center text-blue-500">Innovate yourself through Tech Events</h1> 13 | <div className='w-[100%] flex flex-wrap mx-auto justify-center items-center mt-26 py-8 mb-5 max-w-screen-2xl format-card'> 14 | <div className="md:w-2/3 ml-5" data-aos="fade-left" data-aos-duration="500"> 15 | <p className="team-description font-bold text-2xl text-center"> 16 | Join our DevsInTech community for an array of exciting online tech events. Attend insightful webinars featuring industry experts, dive deep into practical workshops to enhance your skills, and unleash your creativity in our competitive hackathons. Engage with fellow developers, expand your network, and stay updated on cutting-edge technologies and industry trends. 17 | </p> 18 | </div> 19 | </div> 20 | </div> 21 | <section className="container mx-auto py-14 px-8"> 22 | <div className="grid md:grid-cols-2 my-10 lg:grid-cols-3 gap-6 max-w-xs md:max-w-full m-auto"> 23 | {data && 24 | data.map((card, index) => ( 25 | <Card 26 | key={index} 27 | text={card.text} 28 | img={card.img} 29 | title={card.title} 30 | /> 31 | ))} 32 | </div> 33 | </section> 34 | <ScrollToTop /> 35 | <Footer /> 36 | </> 37 | ); 38 | }; 39 | 40 | export default TechEvents; -------------------------------------------------------------------------------- /src/pages/home/index.jsx: -------------------------------------------------------------------------------- 1 | import { AboutCommunity, HeroSection } from "@/components"; 2 | import FaqAccordion from "@/components/FaqAccordion"; 3 | import Footer from "@/components/Footer"; 4 | import Cards from "@/components/HomePage/Events_Cards"; 5 | import Letter from "@/components/Letter"; 6 | import Navbar from "@/components/Navbar"; 7 | import ScrollToTop from "@/components/ScrollToTop"; 8 | import TestimonialCarousel from "@/components/testimonial"; 9 | const Home = () => { 10 | return ( 11 | <> 12 | <Navbar /> 13 | <HeroSection /> 14 | <ScrollToTop /> 15 | <AboutCommunity /> 16 | <Cards /> 17 | <TestimonialCarousel /> 18 | <FaqAccordion /> 19 | <Letter /> 20 | <Footer /> 21 | 22 | </> 23 | ); 24 | }; 25 | 26 | export default Home; 27 | -------------------------------------------------------------------------------- /src/pages/index.js: -------------------------------------------------------------------------------- 1 | import Head from "next/head"; 2 | import Script from "next/script"; 3 | import Home from "./home"; 4 | 5 | export default function Main() { 6 | return ( 7 | <> 8 | <Head> 9 | <title>DevsInTech 10 | 14 | {/* Primary Meta Tags */} 15 | 16 | 20 | 21 | 25 | 26 | 27 | 28 | 29 | {/* Open Graph / Facebook */} 30 | 31 | 32 | 33 | 34 | 38 | 42 | 43 | {/* Twitter */} 44 | 45 | 46 | 47 | 48 | 49 | 53 | 57 | 58 | ); 59 | } 60 | -------------------------------------------------------------------------------- /src/pages/team/index.jsx: -------------------------------------------------------------------------------- 1 | import Footer from "@/components/Footer"; 2 | import Navbar from "@/components/Navbar"; 3 | import Revealingsoon from "@/components/revealingsoon"; 4 | import ScrollToTop from "@/components/ScrollToTop"; 5 | 6 | const Team = () => { 7 | return ( 8 | <> 9 | 10 | {/* */} 11 | 12 | 13 |