diff --git a/.github/ISSUE_TEMPLATE copy/bug_report.yml b/.github/ISSUE_TEMPLATE copy/bug_report.yml new file mode 100644 index 000000000..e6aa8dc68 --- /dev/null +++ b/.github/ISSUE_TEMPLATE copy/bug_report.yml @@ -0,0 +1,38 @@ +name: Bug 🐞 +description: Report an issue to help us improve the project. +title: "[Bug] " +body: + - type: textarea + id: description + attributes: + label: Description + description: A brief description of the issue or bug you are facing, also include what you tried and what didn't work. + validations: + required: false + + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: Please add screenshots if applicable. + validations: + required: false + + - type: checkboxes + id: no-duplicate-issues + attributes: + label: "Checklist" + options: + - label: "I have checked the existing issues." + required: true + + - label: "I follow [Contributing Guidelines](https://github.com/Kritika30032002/ReactCreations/blob/main/contribution.md) of this project." + required: true + + - type: question + id: specific-program + attributes: + label: "Do you contribute under a specific program?" + description: "If yes, please mention the program. If not, you can skip this question." + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE copy/doc_report.yml b/.github/ISSUE_TEMPLATE copy/doc_report.yml new file mode 100644 index 000000000..0404b3fac --- /dev/null +++ b/.github/ISSUE_TEMPLATE copy/doc_report.yml @@ -0,0 +1,37 @@ +name: Documentation Request 📃 +description: Change regarding improving the docs to be more accessible +title: '[Docs]' +body: + - type: textarea + attributes: + label: Category of documentation update + description: | + What category does this change fall under. For example Typo error, New category addition, Rephrasing the sentences, fixing broken links etc. + validations: + required: true + + - type: textarea + attributes: + label: Describe the change you think might work + description: Please describe the change & need of change in atmost detail possible. + validations: + required: false + + - type: checkboxes + id: no-duplicate-issues + attributes: + label: "Checklist" + options: + - label: "I have checked the existing issues." + required: true + + - label: "I follow [Contributing Guidelines](https://github.com/Kritika30032002/ReactCreations/blob/main/contribution.md) of this project." + required: true + + - type: question + id: specific-program + attributes: + label: "Do you contribute under a specific program?" + description: "If yes, please mention the program. If not, you can skip this question." + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE copy/feature_request.yml b/.github/ISSUE_TEMPLATE copy/feature_request.yml new file mode 100644 index 000000000..042b378d0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE copy/feature_request.yml @@ -0,0 +1,38 @@ +name: Feature Request 💡 +description: Have any new idea or new feature? Please suggest! +title: "[Feature] " +body: + - type: textarea + id: description + attributes: + label: Description + description: A clear and concise description of any alternative solution or features you've considered. + validations: + required: true + + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: Please add screenshots if applicable. + validations: + required: false + + - type: checkboxes + id: no-duplicate-issues + attributes: + label: "Checklist" + options: + - label: "I have checked the existing issues." + required: true + + - label: "I follow [Contributing Guidelines](https://github.com/Kritika30032002/ReactCreations/blob/main/contribution.md) of this project." + required: true + + - type: question + id: specific-program + attributes: + label: "Do you contribute under a specific program?" + description: "If yes, please mention the program. If not, you can skip this question." + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE copy/other.yml b/.github/ISSUE_TEMPLATE copy/other.yml new file mode 100644 index 000000000..6020fc044 --- /dev/null +++ b/.github/ISSUE_TEMPLATE copy/other.yml @@ -0,0 +1,42 @@ +name: Other 🤔 +description: Use this for any other issues. PLEASE do not create blank issues +title: "[Other]" +body: + - type: markdown + attributes: + value: "# Other issue" + + - type: textarea + id: issuedescription + attributes: + label: What would you like to share? + description: Provide a clear and concise explanation of your issue. + validations: + required: true + + - type: textarea + id: extrainfo + attributes: + label: Additional information + description: Is there anything else we should know about this issue? + validations: + required: false + + - type: checkboxes + id: no-duplicate-issues + attributes: + label: "Checklist" + options: + - label: "I have checked the existing issues." + required: true + + - label: "I follow [Contributing Guidelines](https://github.com/Kritika30032002/ReactCreations/blob/main/contribution.md) of this project." + required: true + + - type: question + id: specific-program + attributes: + label: "Do you contribute under a specific program?" + description: "If yes, please mention the program. If not, you can skip this question." + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE copy/style.yml b/.github/ISSUE_TEMPLATE copy/style.yml new file mode 100644 index 000000000..c4a77d166 --- /dev/null +++ b/.github/ISSUE_TEMPLATE copy/style.yml @@ -0,0 +1,33 @@ +name: Style Changing Request 👯‍♂️ +description: Suggest a style design +title: '[Style]' +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this template! + - type: textarea + id: style-idea + attributes: + label: What's the style idea? + placeholder: Add descriptions + value: 'We need to improve' + + - type: checkboxes + id: no-duplicate-issues + attributes: + label: "Checklist" + options: + - label: "I have checked the existing issues." + required: true + + - label: "I follow [Contributing Guidelines](https://github.com/Kritika30032002/ReactCreations/blob/main/contribution.md) of this project." + required: true + + - type: question + id: specific-program + attributes: + label: "Do you contribute under a specific program?" + description: "If yes, please mention the program. If not, you can skip this question." + validations: + required: false \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..1877e9d36 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,18 @@ +# Fixes Issue🛠️ + + + +Closes # + +# Description👨‍💻 + + + +# Checklist✅ + +- [] My code follows the style guidelines of this project +- [] I have performed a self-review of my own code +- [] I have added demonstration in the form of GIF/video file +- [] I am an Open Source Contributor + +# Screenshots/GIF📷 \ No newline at end of file diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 000000000..ea82a6c4f --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,42 @@ +name: 'CodeQL' + +on: + push: + branches: ['main'] + pull_request: + branches: ['main'] + schedule: + - cron: '19 19 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: ['javascript'] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: '/language:${{matrix.language}}' diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 000000000..35c9a0ccd --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,18 @@ +name: 'Greetings' + +on: + issues: + types: [opened] + pull_request_target: + types: [opened] + +jobs: + welcome: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: EddieHubCommunity/gh-action-community/src/welcome@main + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + issue-message: 'Congratulations, @${{ github.actor }}! 🎉 Thank you for creating your issue for ReactCreations project. Your contribution is greatly appreciated and we look forward to working with you to resolve the issue. Keep up the great work! Should you have any queries or require guidance, do not hesitate to ask.' + pr-message: 'Great job, @${{ github.actor }}! 🎉 Thank you for submitting your pull request for ReactCreations project. Our dedicated team will review it diligently.Your contribution is valuable and we appreciate your efforts to improve our project.' diff --git a/BMI_Calculator/.gitignore b/BMI_Calculator/.gitignore new file mode 100644 index 000000000..a88639f82 --- /dev/null +++ b/BMI_Calculator/.gitignore @@ -0,0 +1,15 @@ +# Ignore node_modules directory +node_modules/ + +# Ignore build output +build/ + +# Ignore IDE and editor files +.vscode/ +.idea/ + +# Ignore environment-specific files +.env + +# Ignore log files +*.log diff --git a/BMI_Calculator/README.md b/BMI_Calculator/README.md new file mode 100644 index 000000000..4ba07f600 --- /dev/null +++ b/BMI_Calculator/README.md @@ -0,0 +1,34 @@ +# BMI - Calculator + +## Tech Stack + +- React +- JavaScript +- HTML +- CSS + +## How to Run the Code + +To run the code, follow these steps: + +1. Clone the repository. +2. Navigate to the project directory. +3. Install the dependencies by running the following command in your terminal: + + ```bash + npm install + ``` + +4. Start the development server by running the following command: + + ```bash + npm start + ``` + +5. Open your browser and visit `http://localhost:3000` to view the application. + +## Demo Video + +Check out the demo video below to see the BMI Calculator in action: + +[![BMI Calculator Demo](https://youtu.be/WEU9jhG0hSE?si=4_XtXizDHEUxOh85/0.jpg)](https://youtu.be/WEU9jhG0hSE?si=4_XtXizDHEUxOh85) diff --git a/BMI_Calculator/package.json b/BMI_Calculator/package.json new file mode 100644 index 000000000..2355e8f50 --- /dev/null +++ b/BMI_Calculator/package.json @@ -0,0 +1,28 @@ +{ + "name": "simple-bmi-calculatorreact", + "version": "1.0.0", + "description": "", + "keywords": [], + "main": "src/index.js", + "dependencies": { + "react": "17.0.2", + "react-dom": "17.0.2", + "react-scripts": "4.0.0" + }, + "devDependencies": { + "@babel/runtime": "7.13.8", + "typescript": "4.1.3" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] + } \ No newline at end of file diff --git a/BMI_Calculator/public/index.html b/BMI_Calculator/public/index.html new file mode 100644 index 000000000..9e3546dd6 --- /dev/null +++ b/BMI_Calculator/public/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + React App + + + + +
+ + + \ No newline at end of file diff --git a/BMI_Calculator/src/App.jsx b/BMI_Calculator/src/App.jsx new file mode 100644 index 000000000..788fb4228 --- /dev/null +++ b/BMI_Calculator/src/App.jsx @@ -0,0 +1,177 @@ +import React, { Component } from "react"; +import "./styles.css"; +// class App extends Component { +// constructor(props) { +// super(props); +// this.state = { +// fullName: '', +// weight: '', +// height: '', +// bmi: '', +// message: '', +// optimalWeight: '' +// }; + +// this.handleChange = this.handleChange.bind(this); +// this.calculateBMI = this.calculateBMI.bind(this); +// this.handleSubmit = this.handleSubmit.bind(this); +// } + +// handleChange(e) { +// this.setState({ [e.target.name]: e.target.value }); +// } + +// calculateBMI() { +// let heightSquared = ((this.state.height / 100) * this.state.height) / 100; +// let bmi = this.state.weight / heightSquared; +// let low = Math.round(18.5 * heightSquared); +// let high = Math.round(24.99 * heightSquared); +// let message = ''; +// if (bmi >= 18.5 && bmi <= 24.99) { +// message = 'You are in a healthy weight range'; +// } else if (bmi >= 25 && bmi <= 29.9) { +// message = 'You are overweight'; +// } else if (bmi >= 30) { +// message = 'You are obese'; +// } else if (bmi < 18.5) { +// message = 'You are under weight'; +// } + +// this.setState({ message: message }); +// this.setState({ +// optimalWeight: +// 'Your suggested weight range is between ' + low + ' - ' + high +// }); +// this.setState({ bmi: Math.round(bmi * 100) / 100 }); +// } + +// handleSubmit(e) { +// this.calculateBMI(); +// e.preventDefault(); +// // console.log(this.state); +// } + +// render() { +// return ( +//
+//
+//
+//

BMI calculator

+//
+// +// +//
+//
+// +// +//
+ +//
+// +// +//
+//
+//
+// {/* */} +// +//

{this.state.message}

+//

{this.state.bmi}

+//
+//
+//
+// ); +// } +// } + +// export default App; + +class App extends React.Component { + constructor() { + super(); + this.state = { + height: "", + weight: "", + bmi: "", + msg: "" + }; + + // this.handleChange = this.handleChange.bind(this); + // this.handleSubmit = this.handleSubmit.bind(this); + // this.calculateBMI = this.calculateBMI.bind(this); + } + + handleChange = (e) => { + this.setState({ [e.target.name]: e.target.value }); + }; + + calculateBMI = () => { + let heightSq = (this.state.height / 100) * (this.state.height / 100); + let bmi = this.state.weight / heightSq; + let msg = ""; + if (bmi < 18.5) { + msg = "under Weight"; + } else if (bmi >= 18.5 && bmi <= 24.9) { + msg = "Normal Weight"; + } else if (bmi >= 25 && bmi <= 29.9) { + msg = "Over Weight"; + } else if (bmi >= 30) { + msg = "Obesity"; + } + this.setState({ msg: msg }); + this.setState({ bmi: Math.round(bmi * 100) / 100 }); + }; + + handleSubmit = (e) => { + this.calculateBMI(); + e.preventDefault(); + }; + + render() { + return ( +
+
+

BMI calculator

+
+ + +
+ +
+ + +
+ +

{this.state.bmi}

+

{this.state.msg}

+
+
+ ); + } +} +export default App; diff --git a/BMI_Calculator/src/index.jsx b/BMI_Calculator/src/index.jsx new file mode 100644 index 000000000..d65892e7f --- /dev/null +++ b/BMI_Calculator/src/index.jsx @@ -0,0 +1,12 @@ +import { StrictMode } from "react"; +import ReactDOM from "react-dom"; + +import App from "./App"; + +const rootElement = document.getElementById("root"); +ReactDOM.render( + + + , + rootElement +); diff --git a/BMI_Calculator/src/styles.css b/BMI_Calculator/src/styles.css new file mode 100644 index 000000000..a45ab8367 --- /dev/null +++ b/BMI_Calculator/src/styles.css @@ -0,0 +1,28 @@ +.App { + display: flex; + justify-content: center; + border-radius: 5px; + background-color: lightcoral; + padding: 20px; + border: 1px solid cadetblue; + border-radius: 100px; + } + + input { + width: 100%; + padding: 5px; + margin: 8px 0; + box-sizing: border-box; + } + + button { + width: 100%; + padding: 5px; + margin: 8px 0; + box-sizing: border-box; + background-color: lightslategray; + } + button:hover { + background-color: lightsteelblue; + } + \ No newline at end of file diff --git a/CodeOfConduct.md b/CodeOfConduct.md new file mode 100644 index 000000000..319a58d61 --- /dev/null +++ b/CodeOfConduct.md @@ -0,0 +1,40 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at https://www.linkedin.com/in/kritika-gupta-343458212/. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + diff --git a/TODO_DjangoReact/Django-React-NotesApp/.dockerignore b/TODO_DjangoReact/Django-React-NotesApp/.dockerignore new file mode 100644 index 000000000..946d80c58 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/.dockerignore @@ -0,0 +1,4 @@ +__pycache__/ +node_modules/ +db.sqlite3 +venv diff --git a/TODO_DjangoReact/Django-React-NotesApp/.gitignore b/TODO_DjangoReact/Django-React-NotesApp/.gitignore new file mode 100644 index 000000000..2c57255ba --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/.gitignore @@ -0,0 +1,6 @@ +__pycache__/ +node_modules/ +db.sqlite3 +.env +venv +env \ No newline at end of file diff --git a/TODO_DjangoReact/Django-React-NotesApp/Dockerfile b/TODO_DjangoReact/Django-React-NotesApp/Dockerfile new file mode 100644 index 000000000..0bd966a96 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.9-slim + +WORKDIR /app +COPY . . + +RUN pip install -r requirements.txt + +CMD ["python","manage.py","runserver","0.0.0.0:8000"] \ No newline at end of file diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/__init__.py b/TODO_DjangoReact/Django-React-NotesApp/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/admin.py b/TODO_DjangoReact/Django-React-NotesApp/api/admin.py new file mode 100644 index 000000000..187953b82 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +# Register your models here. + +from .models import Note + + +admin.site.register(Note) diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/apps.py b/TODO_DjangoReact/Django-React-NotesApp/api/apps.py new file mode 100644 index 000000000..66656fd29 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ApiConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'api' diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/migrations/0001_initial.py b/TODO_DjangoReact/Django-React-NotesApp/api/migrations/0001_initial.py new file mode 100644 index 000000000..0d305fb7e --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/migrations/0001_initial.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.7 on 2021-09-09 14:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Note', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('body', models.TextField(blank=True, null=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + ] diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/migrations/__init__.py b/TODO_DjangoReact/Django-React-NotesApp/api/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/models.py b/TODO_DjangoReact/Django-React-NotesApp/api/models.py new file mode 100644 index 000000000..7cee397e8 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/models.py @@ -0,0 +1,12 @@ +from django.db import models + +# Create your models here. + + +class Note(models.Model): + body = models.TextField(null=True, blank=True) + updated = models.DateTimeField(auto_now=True) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return self.body[0:50] diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/serializers.py b/TODO_DjangoReact/Django-React-NotesApp/api/serializers.py new file mode 100644 index 000000000..8c8a585e3 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/serializers.py @@ -0,0 +1,8 @@ +from rest_framework.serializers import ModelSerializer +from .models import Note + + +class NoteSerializer(ModelSerializer): + class Meta: + model = Note + fields = '__all__' diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/tests.py b/TODO_DjangoReact/Django-React-NotesApp/api/tests.py new file mode 100644 index 000000000..7ce503c2d --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/urls.py b/TODO_DjangoReact/Django-React-NotesApp/api/urls.py new file mode 100644 index 000000000..babf3360d --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/urls.py @@ -0,0 +1,12 @@ +from django.urls import path +from . import views + +urlpatterns = [ + path('', views.getRoutes, name="routes"), + path('notes/', views.getNotes, name="notes"), + # path('notes/create/', views.createNote, name="create-note"), + #path('notes//update/', views.updateNote, name="update-note"), + #path('notes//delete/', views.deleteNote, name="delete-note"), + + path('notes//', views.getNote, name="note"), +] diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/utils.py b/TODO_DjangoReact/Django-React-NotesApp/api/utils.py new file mode 100644 index 000000000..3841e9b9e --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/utils.py @@ -0,0 +1,40 @@ +from rest_framework.response import Response +from .models import Note +from .serializers import NoteSerializer + + +def getNotesList(request): + notes = Note.objects.all().order_by('-updated') + serializer = NoteSerializer(notes, many=True) + return Response(serializer.data) + + +def getNoteDetail(request, pk): + notes = Note.objects.get(id=pk) + serializer = NoteSerializer(notes, many=False) + return Response(serializer.data) + + +def createNote(request): + data = request.data + note = Note.objects.create( + body=data['body'] + ) + serializer = NoteSerializer(note, many=False) + return Response(serializer.data) + +def updateNote(request, pk): + data = request.data + note = Note.objects.get(id=pk) + serializer = NoteSerializer(instance=note, data=data) + + if serializer.is_valid(): + serializer.save() + + return serializer.data + + +def deleteNote(request, pk): + note = Note.objects.get(id=pk) + note.delete() + return Response('Note was deleted!') diff --git a/TODO_DjangoReact/Django-React-NotesApp/api/views.py b/TODO_DjangoReact/Django-React-NotesApp/api/views.py new file mode 100644 index 000000000..c6e88d46f --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/api/views.py @@ -0,0 +1,106 @@ +from django.http import response +from django.shortcuts import render +from rest_framework.response import Response +from rest_framework.decorators import api_view +from rest_framework.serializers import Serializer +from .models import Note +from .serializers import NoteSerializer +from api import serializers +from .utils import updateNote, getNoteDetail, deleteNote, getNotesList, createNote +# Create your views here. + + +@api_view(['GET']) +def getRoutes(request): + + routes = [ + { + 'Endpoint': '/notes/', + 'method': 'GET', + 'body': None, + 'description': 'Returns an array of notes' + }, + { + 'Endpoint': '/notes/id', + 'method': 'GET', + 'body': None, + 'description': 'Returns a single note object' + }, + { + 'Endpoint': '/notes/create/', + 'method': 'POST', + 'body': {'body': ""}, + 'description': 'Creates new note with data sent in post request' + }, + { + 'Endpoint': '/notes/id/update/', + 'method': 'PUT', + 'body': {'body': ""}, + 'description': 'Creates an existing note with data sent in post request' + }, + { + 'Endpoint': '/notes/id/delete/', + 'method': 'DELETE', + 'body': None, + 'description': 'Deletes and exiting note' + }, + ] + return Response(routes) + + +# /notes GET +# /notes POST +# /notes/ GET +# /notes/ PUT +# /notes/ DELETE + +@api_view(['GET', 'POST']) +def getNotes(request): + + if request.method == 'GET': + return getNotesList(request) + + if request.method == 'POST': + return createNote(request) + + +@api_view(['GET', 'PUT', 'DELETE']) +def getNote(request, pk): + + if request.method == 'GET': + return getNoteDetail(request, pk) + + if request.method == 'PUT': + return updateNote(request, pk) + + if request.method == 'DELETE': + return deleteNote(request, pk) + + +# @api_view(['POST']) +# def createNote(request): +# data = request.data +# note = Note.objects.create( +# body=data['body'] +# ) +# serializer = NoteSerializer(note, many=False) +# return Response(serializer.data) + + +# @api_view(['PUT']) +# def updateNote(request, pk): +# data = request.data +# note = Note.objects.get(id=pk) +# serializer = NoteSerializer(instance=note, data=data) + +# if serializer.is_valid(): +# serializer.save() + +# return Response(serializer.data) + + +# @api_view(['DELETE']) +# def deleteNote(request, pk): +# note = Note.objects.get(id=pk) +# note.delete() +# return Response('Note was deleted!') diff --git a/TODO_DjangoReact/Django-React-NotesApp/desktop wallpaper.jpg b/TODO_DjangoReact/Django-React-NotesApp/desktop wallpaper.jpg new file mode 100644 index 000000000..660c2aaea Binary files /dev/null and b/TODO_DjangoReact/Django-React-NotesApp/desktop wallpaper.jpg differ diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/README.md b/TODO_DjangoReact/Django-React-NotesApp/frontend/README.md new file mode 100644 index 000000000..0c83cde2c --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/frontend/README.md @@ -0,0 +1,70 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `npm run build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/asset-manifest.json b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/asset-manifest.json new file mode 100644 index 000000000..604966afe --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/asset-manifest.json @@ -0,0 +1,22 @@ +{ + "files": { + "main.css": "/static/css/main.138a22f4.chunk.css", + "main.js": "/static/js/main.5b159992.chunk.js", + "main.js.map": "/static/js/main.5b159992.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.4eab1d6a.js", + "runtime-main.js.map": "/static/js/runtime-main.4eab1d6a.js.map", + "static/js/2.bbb5d1f5.chunk.js": "/static/js/2.bbb5d1f5.chunk.js", + "static/js/2.bbb5d1f5.chunk.js.map": "/static/js/2.bbb5d1f5.chunk.js.map", + "index.html": "/index.html", + "static/css/main.138a22f4.chunk.css.map": "/static/css/main.138a22f4.chunk.css.map", + "static/js/2.bbb5d1f5.chunk.js.LICENSE.txt": "/static/js/2.bbb5d1f5.chunk.js.LICENSE.txt", + "static/media/add.3ceadee7.svg": "/static/media/add.3ceadee7.svg", + "static/media/arrow-left.a94dd897.svg": "/static/media/arrow-left.a94dd897.svg" + }, + "entrypoints": [ + "static/js/runtime-main.4eab1d6a.js", + "static/js/2.bbb5d1f5.chunk.js", + "static/css/main.138a22f4.chunk.css", + "static/js/main.5b159992.chunk.js" + ] +} \ No newline at end of file diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/favicon.ico b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/favicon.ico new file mode 100644 index 000000000..a11777cc4 Binary files /dev/null and b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/favicon.ico differ diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/index.html b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/index.html new file mode 100644 index 000000000..ff1e85e2a --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/index.html @@ -0,0 +1 @@ +React App
\ No newline at end of file diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/logo192.png b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/logo192.png new file mode 100644 index 000000000..fc44b0a37 Binary files /dev/null and b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/logo192.png differ diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/logo512.png b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/logo512.png new file mode 100644 index 000000000..a4e47a654 Binary files /dev/null and b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/logo512.png differ diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/manifest.json b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/manifest.json new file mode 100644 index 000000000..080d6c77a --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/robots.txt b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/robots.txt new file mode 100644 index 000000000..e9e57dc4d --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/css/main.138a22f4.chunk.css b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/css/main.138a22f4.chunk.css new file mode 100644 index 000000000..ec0087341 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/css/main.138a22f4.chunk.css @@ -0,0 +1,2 @@ +@import url(https://fonts.googleapis.com/css2?family=Lexend:wght@400;600;700&display=swap);:root{--color-text:#383a3f;--color-dark:#1f2124;--color-gray:#677;--color-bg:#f3f6f9;--color-light:#acb4bd;--color-lighter:#f9f9f9;--color-white:#fff;--color-border:#e0e3e6}.dark,:root{--color-main:#f68657}.dark{--color-text:#d6d1d1;--color-dark:#f5f6f7;--color-gray:#999;--color-bg:#1f2124;--color-lighter:#292a2c;--color-white:#2e3235;--color-border:#252629}*{margin:0;padding:0;box-sizing:border-box;font-family:"Lexend",sans-serif;color:inherit;font-size:inherit;scroll-behavior:smooth}body{line-height:1.8em;font-weight:400;font-size:16px}a{text-decoration:none}.container{width:100%;height:100vh;color:#383a3f;color:var(--color-text);background-color:#f3f6f9;background-color:var(--color-bg);display:flex;align-items:center}.app{width:100%;max-width:480px;height:88vh;margin:0 auto;background-color:#fff;background-color:var(--color-white);box-shadow:1px 1px 6px rgba(0,0,0,.05);position:relative}.app-header{display:flex;align-items:center;padding:16px;justify-content:space-between;background-color:#f9f9f9;background-color:var(--color-lighter);box-shadow:0 1px 3px rgba(0,0,0,.1)}.app-header h1{font-size:30px;color:#1f2124;color:var(--color-dark);font-weight:800;text-align:center}.app-header button{border:0;background:transparent;cursor:pointer}.app-header button>svg{fill:#1f2124;fill:var(--color-dark);height:25px;width:25px;object-fit:cover}.app-body{padding:16px}.notes-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px}.notes-count,.notes-title{color:#f68657;color:var(--color-main);font-size:24px;font-weight:600}.notes-count{font-size:18px;color:#677;color:var(--color-gray)}.notes-list{padding:0;margin:16px 0;height:70vh;overflow-y:auto;scrollbar-width:none}.notes-list::-webkit-scrollbar{display:none}.notes-list-item{border-bottom:1px solid #e0e3e6;border-bottom:1px solid var(--color-border);margin-bottom:12px;padding:8px 16px;transition:all .2s ease-in-out}.notes-list-item:hover{background-color:#f3f6f9;background-color:var(--color-bg);cursor:pointer}.notes-list-item h3,.notes-list-item p span{font-weight:600}.notes-list-item p span{color:#677;color:var(--color-gray);display:inline-block;margin-right:8px}.notes-list-item p{font-size:14px;color:#acb4bd;color:var(--color-light)}.floating-button{font-size:48px;position:absolute;bottom:24px;right:16px;background:#f68657;background:var(--color-main);border:none;width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:1px 1px 10px rgba(0,0,0,.2)}.floating-button>svg{fill:#f3f6f9;fill:var(--color-bg)}.note-header{justify-content:space-between;color:#f68657;color:var(--color-main);padding:10px}.note-header,.note-header h3{display:flex;align-items:center}.note-header h3{font-size:24px;cursor:pointer}.note-header h3 svg{fill:#f68657;fill:var(--color-main);width:20px;margin-right:8px}.note-header button{border:none;outline:none;font-weight:600;background-color:transparent;font-size:18px;cursor:pointer}.note textarea{background-color:#fff;background-color:var(--color-white);border:none;padding:16px 12px;width:100%;height:70vh;resize:none;scrollbar-width:none}.note textarea:active,.note textarea:focus{outline:none;border:none}.note textarea::-webkit-scrollbar{display:none} +/*# sourceMappingURL=main.138a22f4.chunk.css.map */ \ No newline at end of file diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/css/main.138a22f4.chunk.css.map b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/css/main.138a22f4.chunk.css.map new file mode 100644 index 000000000..0b51df904 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/css/main.138a22f4.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["main.138a22f4.chunk.css","webpack://src/App.css"],"names":[],"mappings":"AAAA,0FAA0F,CCI1F,MAEE,oBAAqB,CACrB,oBAAqB,CACrB,iBAAkB,CAClB,kBAAmB,CACnB,qBAAsB,CACtB,uBAAwB,CACxB,kBAAmB,CACnB,sBACF,CAEA,YAXE,oBAoBF,CATA,MAEE,oBAAqB,CACrB,oBAAqB,CACrB,iBAAkB,CAClB,kBAAmB,CACnB,uBAAwB,CACxB,qBAAsB,CACtB,sBACF,CAKA,EACE,QAAS,CACT,SAAU,CACV,qBAAsB,CACtB,+BAAiC,CACjC,aAAc,CACd,iBAAkB,CAClB,sBACF,CAGA,KACE,iBAAkB,CAClB,eAAgB,CAChB,cACF,CAEA,EACE,oBACF,CAKA,WACE,UAAW,CACX,YAAa,CACb,aAAwB,CAAxB,uBAAwB,CACxB,wBAAiC,CAAjC,gCAAiC,CACjC,YAAa,CACb,kBACF,CAGA,KACE,UAAW,CACX,eAAgB,CAChB,WAAY,CACZ,aAAc,CACd,qBAAoC,CAApC,mCAAoC,CACpC,sCAA2C,CAC3C,iBACF,CAGA,YACE,YAAa,CACb,kBAAmB,CACnB,YAAa,CACb,6BAA8B,CAC9B,wBAAsC,CAAtC,qCAAsC,CACtC,mCACF,CAEA,eACE,cAAe,CACf,aAAwB,CAAxB,uBAAwB,CACxB,eAAgB,CAChB,iBACF,CAEA,mBACE,QAAS,CACT,sBAAuB,CACvB,cACF,CAEA,uBACE,YAAuB,CAAvB,sBAAuB,CACvB,WAAY,CACZ,UAAW,CACX,gBACF,CAEA,UACE,YACF,CAKA,cACE,YAAa,CACb,kBAAmB,CACnB,6BAA8B,CAC9B,iBACF,CAEA,0BAEE,aAAwB,CAAxB,uBAAwB,CACxB,cAAe,CACf,eACF,CAEA,aACE,cAAe,CACf,UAAwB,CAAxB,uBACF,CAGA,YACE,SAAU,CACV,aAAc,CACd,WAAY,CACZ,eAAgB,CAChB,oBACF,CAEA,+BACE,YACF,CAEA,iBACE,+BAA6C,CAA7C,2CAA6C,CAC7C,kBAAmB,CACnB,gBAAiB,CACjB,8BACF,CAEA,uBACE,wBAAiC,CAAjC,gCAAiC,CACjC,cACF,CAEA,4CAEE,eACF,CAGA,wBACE,UAAwB,CAAxB,uBAAwB,CACxB,oBAAqB,CACrB,gBACF,CAEA,mBACE,cAAe,CACf,aAAyB,CAAzB,wBACF,CAEA,iBACE,cAAe,CACf,iBAAkB,CAClB,WAAY,CACZ,UAAW,CACX,kBAA6B,CAA7B,4BAA6B,CAC7B,WAAY,CACZ,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,cAAe,CACf,sCACF,CAGA,qBACE,YAAqB,CAArB,oBACF,CAQA,aAGE,6BAA8B,CAC9B,aAAwB,CAAxB,uBAAwB,CACxB,YACF,CAEA,6BAPE,YAAa,CACb,kBAWF,CALA,gBAGE,cAAe,CACf,cACF,CAEA,oBACE,YAAuB,CAAvB,sBAAuB,CACvB,UAAW,CACX,gBACF,CAEA,oBACE,WAAY,CACZ,YAAa,CACb,eAAgB,CAChB,4BAA6B,CAC7B,cAAe,CACf,cACF,CAEA,eACE,qBAAoC,CAApC,mCAAoC,CACpC,WAAY,CACZ,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,WAAY,CACZ,oBACF,CAEA,2CAEE,YAAa,CACb,WACF,CAEA,kCACE,YACF","file":"main.138a22f4.chunk.css","sourcesContent":["@import url(https://fonts.googleapis.com/css2?family=Lexend:wght@400;600;700&display=swap);\n:root {\r\n --color-main: #f68657;\r\n --color-text: #383a3f;\r\n --color-dark: #1f2124;\r\n --color-gray: #677;\r\n --color-bg: #f3f6f9;\r\n --color-light: #acb4bd;\r\n --color-lighter: #f9f9f9;\r\n --color-white: #fff;\r\n --color-border:#e0e3e6;\r\n}\r\n\r\n.dark {\r\n --color-main: #f68657;\r\n --color-text: #d6d1d1;\r\n --color-dark: #f5f6f7;\r\n --color-gray: #999;\r\n --color-bg: #1f2124;\r\n --color-lighter: #292a2c;\r\n --color-white: #2e3235;\r\n --color-border:#252629;\r\n}\r\n\r\n/* BASE STYLES */\r\n\r\n\r\n*{\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n font-family: 'Lexend', sans-serif;\r\n color: inherit;\r\n font-size: inherit;\r\n scroll-behavior: smooth;\r\n}\r\n\r\n\r\nbody{\r\n line-height: 1.8em;\r\n font-weight: 400;\r\n font-size: 16px;\r\n}\r\n\r\na {\r\n text-decoration: none;\r\n}\r\n\r\n/* APP STYLES */\r\n\r\n\r\n.container {\r\n width: 100%;\r\n height: 100vh;\r\n color: #383a3f;\r\n color: var(--color-text);\r\n background-color: #f3f6f9;\r\n background-color: var(--color-bg);\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n\r\n.app {\r\n width: 100%;\r\n max-width: 480px;\r\n height: 88vh;\r\n margin: 0 auto;\r\n background-color: #fff;\r\n background-color: var(--color-white);\r\n box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.05);\r\n position: relative;\r\n}\r\n\r\n\r\n.app-header {\r\n display: flex;\r\n align-items: center;\r\n padding: 16px;\r\n justify-content: space-between;\r\n background-color: #f9f9f9;\r\n background-color: var(--color-lighter);\r\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.app-header h1 {\r\n font-size: 30px;\r\n color: #1f2124;\r\n color: var(--color-dark);\r\n font-weight: 800;\r\n text-align: center;\r\n}\r\n\r\n.app-header button {\r\n border: 0;\r\n background: transparent;\r\n cursor: pointer;\r\n}\r\n\r\n.app-header button > svg {\r\n fill: #1f2124;\r\n fill: var(--color-dark);\r\n height: 25px;\r\n width: 25px;\r\n object-fit: cover;\r\n}\r\n\r\n.app-body {\r\n padding: 16px;\r\n}\r\n\r\n\r\n/* NOTES STYLES */\r\n\r\n.notes-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 10px 16px;\r\n}\r\n\r\n.notes-title,\r\n.notes-count {\r\n color: #f68657;\r\n color: var(--color-main);\r\n font-size: 24px;\r\n font-weight: 600;\r\n}\r\n\r\n.notes-count {\r\n font-size: 18px;\r\n color: #677;\r\n color: var(--color-gray);\r\n}\r\n\r\n\r\n.notes-list {\r\n padding: 0;\r\n margin: 16px 0;\r\n height: 70vh;\r\n overflow-y: auto;\r\n scrollbar-width: none; /* Firefox */\r\n}\r\n\r\n.notes-list::-webkit-scrollbar {\r\n display: none;\r\n}\r\n\r\n.notes-list-item {\r\n border-bottom: 1px solid #e0e3e6;\r\n border-bottom: 1px solid var(--color-border);\r\n margin-bottom: 12px;\r\n padding: 8px 16px;\r\n transition: all 0.2s ease-in-out;\r\n}\r\n\r\n.notes-list-item:hover {\r\n background-color: #f3f6f9;\r\n background-color: var(--color-bg);\r\n cursor: pointer;\r\n}\r\n\r\n.notes-list-item h3,\r\n.notes-list-item p span {\r\n font-weight: 600;\r\n}\r\n\r\n\r\n.notes-list-item p span {\r\n color: #677;\r\n color: var(--color-gray);\r\n display: inline-block;\r\n margin-right: 8px;\r\n}\r\n\r\n.notes-list-item p {\r\n font-size: 14px;\r\n color: #acb4bd;\r\n color: var(--color-light);\r\n}\r\n\r\n.floating-button {\r\n font-size: 48px;\r\n position: absolute;\r\n bottom: 24px;\r\n right: 16px;\r\n background: #f68657;\r\n background: var(--color-main);\r\n border: none;\r\n width: 60px;\r\n height: 60px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n\r\n.floating-button > svg {\r\n fill: #f3f6f9;\r\n fill: var(--color-bg);\r\n}\r\n\r\n\r\n\r\n/*==============================\r\n=> Note Styles\r\n================================*/\r\n\r\n.note-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n color: #f68657;\r\n color: var(--color-main);\r\n padding: 10px;\r\n}\r\n\r\n.note-header h3 {\r\n display: flex;\r\n align-items: center;\r\n font-size: 24px;\r\n cursor: pointer;\r\n}\r\n\r\n.note-header h3 svg {\r\n fill: #f68657;\r\n fill: var(--color-main);\r\n width: 20px;\r\n margin-right: 8px;\r\n}\r\n\r\n.note-header button {\r\n border: none;\r\n outline: none;\r\n font-weight: 600;\r\n background-color: transparent;\r\n font-size: 18px;\r\n cursor: pointer;\r\n}\r\n\r\n.note textarea {\r\n background-color: #fff;\r\n background-color: var(--color-white);\r\n border: none;\r\n padding: 16px 12px;\r\n width: 100%;\r\n height: 70vh;\r\n resize: none;\r\n scrollbar-width: none; /* Firefox */\r\n}\r\n\r\n.note textarea:active,\r\n.note textarea:focus {\r\n outline: none;\r\n border: none;\r\n}\r\n\r\n.note textarea::-webkit-scrollbar {\r\n display: none;\r\n}\n","@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400;600;700&display=swap');\r\n\r\n\r\n\r\n:root {\r\n --color-main: #f68657;\r\n --color-text: #383a3f;\r\n --color-dark: #1f2124;\r\n --color-gray: #677;\r\n --color-bg: #f3f6f9;\r\n --color-light: #acb4bd;\r\n --color-lighter: #f9f9f9;\r\n --color-white: #fff;\r\n --color-border:#e0e3e6;\r\n}\r\n\r\n.dark {\r\n --color-main: #f68657;\r\n --color-text: #d6d1d1;\r\n --color-dark: #f5f6f7;\r\n --color-gray: #999;\r\n --color-bg: #1f2124;\r\n --color-lighter: #292a2c;\r\n --color-white: #2e3235;\r\n --color-border:#252629;\r\n}\r\n\r\n/* BASE STYLES */\r\n\r\n\r\n*{\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n font-family: 'Lexend', sans-serif;\r\n color: inherit;\r\n font-size: inherit;\r\n scroll-behavior: smooth;\r\n}\r\n\r\n\r\nbody{\r\n line-height: 1.8em;\r\n font-weight: 400;\r\n font-size: 16px;\r\n}\r\n\r\na {\r\n text-decoration: none;\r\n}\r\n\r\n/* APP STYLES */\r\n\r\n\r\n.container {\r\n width: 100%;\r\n height: 100vh;\r\n color: var(--color-text);\r\n background-color: var(--color-bg);\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n\r\n.app {\r\n width: 100%;\r\n max-width: 480px;\r\n height: 88vh;\r\n margin: 0 auto;\r\n background-color: var(--color-white);\r\n box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.05);\r\n position: relative;\r\n}\r\n\r\n\r\n.app-header {\r\n display: flex;\r\n align-items: center;\r\n padding: 16px;\r\n justify-content: space-between;\r\n background-color: var(--color-lighter);\r\n box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.app-header h1 {\r\n font-size: 30px;\r\n color: var(--color-dark);\r\n font-weight: 800;\r\n text-align: center;\r\n}\r\n\r\n.app-header button {\r\n border: 0;\r\n background: transparent;\r\n cursor: pointer;\r\n}\r\n\r\n.app-header button > svg {\r\n fill: var(--color-dark);\r\n height: 25px;\r\n width: 25px;\r\n object-fit: cover;\r\n}\r\n\r\n.app-body {\r\n padding: 16px;\r\n}\r\n\r\n\r\n/* NOTES STYLES */\r\n\r\n.notes-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 10px 16px;\r\n}\r\n\r\n.notes-title,\r\n.notes-count {\r\n color: var(--color-main);\r\n font-size: 24px;\r\n font-weight: 600;\r\n}\r\n\r\n.notes-count {\r\n font-size: 18px;\r\n color: var(--color-gray);\r\n}\r\n\r\n\r\n.notes-list {\r\n padding: 0;\r\n margin: 16px 0;\r\n height: 70vh;\r\n overflow-y: auto;\r\n scrollbar-width: none; /* Firefox */\r\n}\r\n\r\n.notes-list::-webkit-scrollbar {\r\n display: none;\r\n}\r\n\r\n.notes-list-item {\r\n border-bottom: 1px solid var(--color-border);\r\n margin-bottom: 12px;\r\n padding: 8px 16px;\r\n transition: all 0.2s ease-in-out;\r\n}\r\n\r\n.notes-list-item:hover {\r\n background-color: var(--color-bg);\r\n cursor: pointer;\r\n}\r\n\r\n.notes-list-item h3,\r\n.notes-list-item p span {\r\n font-weight: 600;\r\n}\r\n\r\n\r\n.notes-list-item p span {\r\n color: var(--color-gray);\r\n display: inline-block;\r\n margin-right: 8px;\r\n}\r\n\r\n.notes-list-item p {\r\n font-size: 14px;\r\n color: var(--color-light);\r\n}\r\n\r\n.floating-button {\r\n font-size: 48px;\r\n position: absolute;\r\n bottom: 24px;\r\n right: 16px;\r\n background: var(--color-main);\r\n border: none;\r\n width: 60px;\r\n height: 60px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n\r\n.floating-button > svg {\r\n fill: var(--color-bg);\r\n}\r\n\r\n\r\n\r\n/*==============================\r\n=> Note Styles\r\n================================*/\r\n\r\n.note-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n color: var(--color-main);\r\n padding: 10px;\r\n}\r\n\r\n.note-header h3 {\r\n display: flex;\r\n align-items: center;\r\n font-size: 24px;\r\n cursor: pointer;\r\n}\r\n\r\n.note-header h3 svg {\r\n fill: var(--color-main);\r\n width: 20px;\r\n margin-right: 8px;\r\n}\r\n\r\n.note-header button {\r\n border: none;\r\n outline: none;\r\n font-weight: 600;\r\n background-color: transparent;\r\n font-size: 18px;\r\n cursor: pointer;\r\n}\r\n\r\n.note textarea {\r\n background-color: var(--color-white);\r\n border: none;\r\n padding: 16px 12px;\r\n width: 100%;\r\n height: 70vh;\r\n resize: none;\r\n scrollbar-width: none; /* Firefox */\r\n}\r\n\r\n.note textarea:active,\r\n.note textarea:focus {\r\n outline: none;\r\n border: none;\r\n}\r\n\r\n.note textarea::-webkit-scrollbar {\r\n display: none;\r\n}"]} \ No newline at end of file diff --git a/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/js/2.bbb5d1f5.chunk.js b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/js/2.bbb5d1f5.chunk.js new file mode 100644 index 000000000..f14c6f328 --- /dev/null +++ b/TODO_DjangoReact/Django-React-NotesApp/frontend/build/static/js/2.bbb5d1f5.chunk.js @@ -0,0 +1,3 @@ +/*! For license information please see 2.bbb5d1f5.chunk.js.LICENSE.txt */ +(this.webpackJsonpfrontend=this.webpackJsonpfrontend||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(21)},function(e,t,n){"use strict";e.exports=n(26)},function(e,t,n){"use strict";n.d(t,"a",(function(){return w})),n.d(t,"b",(function(){return v})),n.d(t,"c",(function(){return m})),n.d(t,"d",(function(){return b}));var r=n(6),a=n(0),o=n.n(a),l=(n(11),n(4)),i=n(19),u=n(5),c=n(3),s=n(15),f=n.n(s),d=(n(17),n(10)),p=(n(20),function(e){var t=Object(i.a)();return t.displayName=e,t}),h=p("Router-History"),m=p("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}Object(r.a)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return o.a.createElement(m.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.a.createElement(h.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.a.Component);o.a.Component;o.a.Component;var y={},g=0;function b(e,t){void 0===t&&(t={}),("string"===typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,l=n.strict,i=void 0!==l&&l,u=n.sensitive,c=void 0!==u&&u;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=y[n]||(y[n]={});if(r[e])return r[e];var a=[],o={regexp:f()(e,a,t),keys:a};return g<1e4&&(r[e]=o,g++),o}(n,{end:o,strict:i,sensitive:c}),a=r.regexp,l=r.keys,u=a.exec(e);if(!u)return null;var s=u[0],d=u.slice(1),p=e===s;return o&&!p?null:{path:n,url:"/"===n&&""===s?"/":s,isExact:p,params:l.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var w=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){var e=this;return o.a.createElement(m.Consumer,null,(function(t){t||Object(u.a)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?b(n.pathname,e.props):t.match,a=Object(c.a)({},t,{location:n,match:r}),l=e.props,i=l.children,s=l.component,f=l.render;return Array.isArray(i)&&function(e){return 0===o.a.Children.count(e)}(i)&&(i=null),o.a.createElement(m.Provider,{value:a},a.match?i?"function"===typeof i?i(a):i:s?o.a.createElement(s,a):f?f(a):null:"function"===typeof i?i(a):null)}))},t}(o.a.Component);function k(e){return"/"===e.charAt(0)?e:"/"+e}function E(e,t){if(!e)return t;var n=k(e);return 0!==t.pathname.indexOf(n)?t:Object(c.a)({},t,{pathname:t.pathname.substr(n.length)})}function S(e){return"string"===typeof e?e:Object(l.e)(e)}function x(e){return function(){Object(u.a)(!1)}}function _(){}o.a.Component;o.a.Component;o.a.useContext},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t=0;d--){var p=l[d];"."===p?o(l,d):".."===p?(o(l,d),f++):f&&(o(l,d),f--)}if(!c)for(;f--;f)l.unshift("..");!c||""===l[0]||l[0]&&a(l[0])||l.unshift("");var h=l.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function i(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var u=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"===typeof t||"object"===typeof n){var r=i(t),a=i(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},c=n(5);function s(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function d(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function m(e,t,n,a){var o;"string"===typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(r.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=l(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function v(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&u(e.state,t.state)}function y(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"===typeof e?e(t,n):e;"string"===typeof o?"function"===typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),f({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=m(e,t,d(),w.location);s.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,f({action:r,location:a}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t=0||(a[n]=e[n]);return a}n.d(t,"a",(function(){return r}))},function(e,t,n){e.exports=n(28)()},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n