| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Notepad App | Developed by Aditya Devarshi</title> |
| |
| |
| <meta name="description" content="Notepad App by Aditya Devarshi. Create notes with text, emojis, and image URLs. Explore Aditya's portfolio and social profiles."> |
| <meta name="keywords" content="Notepad, FastAPI, Tailwind, Aditya Devarshi, Portfolio, Developer, Python, SQLAlchemy, Minimalist, Monochrome"> |
| <meta name="author" content="Aditya Devarshi"> |
| |
| <meta property="og:type" content="website"> |
| <meta property="og:title" content="Notepad App | Developed by Aditya Devarshi"> |
| <meta property="og:description" content="Create notes with text, emojis, and image URLs. Check out Aditya Devarshi's portfolio and social profiles."> |
| <meta property="og:url" content="https://triflix-notepad.hf.space"> |
| <meta property="og:image" content="https://triflix-notepad.hf.space/static/og-image.jpg"> |
| |
| <meta name="twitter:card" content="summary_large_image"> |
| <meta name="twitter:title" content="Notepad App | Developed by Aditya Devarshi"> |
| <meta name="twitter:description" content="Create notes with text, emojis, and image URLs. Explore Aditya Devarshi's work."> |
| <meta name="twitter:image" content="https://triflix-notepad.hf.space/static/og-image.jpg"> |
|
|
| |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-pap6k1gE+T1/2y5P5/9e6e+fDqBpcFjeDFMEBWfMJrP+y6O78x4AbMFTaQ3WkZs9F6h4vY+PC2ZChT1fIN7S3g==" crossorigin="anonymous" referrerpolicy="no-referrer" /> |
|
|
| |
| <script src="https://cdn.tailwindcss.com"></script> |
| <script> |
| tailwind.config = { |
| theme: { |
| extend: { |
| spacing: { |
| '18': '4.5rem', |
| }, |
| transitionDuration: { |
| '400': '400ms' |
| } |
| } |
| } |
| } |
| </script> |
| |
| <style> |
| |
| .modal { |
| transition: opacity 0.4s ease, transform 0.4s ease; |
| transform: translateY(-20px); |
| } |
| .modal-active { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| .modal-hidden { |
| opacity: 0; |
| pointer-events: none; |
| } |
| |
| .error-effect { |
| animation: shake 0.5s; |
| } |
| @keyframes shake { |
| 0%, 100% { transform: translateX(0); } |
| 20%, 60% { transform: translateX(-10px); } |
| 40%, 80% { transform: translateX(10px); } |
| } |
| </style> |
| </head> |
| <body class="bg-white min-h-screen"> |
| |
| <div id="devModal" class="modal fixed inset-0 flex items-center justify-center bg-black bg-opacity-50 modal-hidden"> |
| <div class="bg-white rounded-lg shadow-xl max-w-md w-full p-6 relative"> |
| <button onclick="closeModal()" class="absolute top-2 right-2 text-gray-500 hover:text-gray-700"> |
| <i class="fas fa-times"></i> |
| </button> |
| <h2 class="text-2xl font-bold text-center mb-4">About Aditya Devarshi</h2> |
| <ul class="space-y-3"> |
| <li> |
| <i class="fas fa-globe text-gray-700"></i> |
| <a href="https://www.adityadevarshi.online" target="_blank" class="text-blue-600 hover:underline">Personal Website</a> |
| </li> |
| <li> |
| <i class="fab fa-github text-gray-700"></i> |
| <a href="https://github.com/devarshiadi/" target="_blank" class="text-blue-600 hover:underline">GitHub Portfolio</a> |
| </li> |
| <li> |
| <i class="fab fa-linkedin text-gray-700"></i> |
| <a href="https://www.linkedin.com/in/aditya-devarshi/" target="_blank" class="text-blue-600 hover:underline">LinkedIn</a> |
| </li> |
| <li> |
| <i class="fab fa-instagram text-gray-700"></i> |
| <a href="https://www.instagram.com/curseofwitcher/" target="_blank" class="text-blue-600 hover:underline">Instagram</a> |
| </li> |
| <li> |
| <i class="fab fa-medium text-gray-700"></i> |
| <a href="https://medium.com/@devarshia5" target="_blank" class="text-blue-600 hover:underline">Medium</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
|
|
| |
| <div class="container mx-auto px-4 py-8 sm:py-12"> |
| <div class="max-w-xl mx-auto bg-white rounded-lg shadow-sm border border-gray-200 p-5 sm:p-8"> |
| <h1 class="text-3xl font-bold text-center text-black mb-4 sm:mb-6">Notepad</h1> |
| <p class="text-gray-700 mb-6 text-center text-sm sm:text-base">Create a note with text, emojis, and image URLs</p> |
| |
| <form action="/create" method="post" class="space-y-6"> |
| <div> |
| <label for="content" class="block text-sm font-medium text-black mb-2">Your Note</label> |
| <textarea |
| id="content" |
| name="content" |
| rows="10" |
| class="w-full px-4 py-3 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-black focus:border-black text-base" |
| placeholder="Write your note here. Image URLs (ending in .jpg, .png, etc.) will be displayed as images." |
| required |
| ></textarea> |
| </div> |
| |
| <div class="flex items-center py-2"> |
| <input |
| type="checkbox" |
| id="is_private" |
| name="is_private" |
| class="h-5 w-5 text-black focus:ring-black border-gray-400 rounded" |
| onchange="togglePasswordField()" |
| > |
| <label for="is_private" class="ml-3 block text-base text-black"> |
| Make this note private |
| </label> |
| </div> |
| |
| <div id="password_field" class="hidden"> |
| <label for="password" class="block text-sm font-medium text-black mb-2">Password</label> |
| <input |
| type="password" |
| id="password" |
| name="password" |
| class="w-full px-4 py-3 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-black focus:border-black text-base" |
| placeholder="Enter a password to protect your note" |
| > |
| <p class="mt-2 text-sm text-gray-600">This password will be required to view the note</p> |
| </div> |
| |
| <div class="mt-8"> |
| <button |
| type="submit" |
| class="w-full flex justify-center py-3 px-4 border border-gray-800 rounded-lg shadow-sm text-base font-medium text-white bg-black hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-colors duration-200" |
| > |
| Create Note |
| </button> |
| </div> |
| </form> |
| </div> |
| </div> |
| |
| <script> |
| function togglePasswordField() { |
| const isPrivate = document.getElementById('is_private').checked; |
| const passwordField = document.getElementById('password_field'); |
| |
| if (isPrivate) { |
| passwordField.classList.remove('hidden'); |
| document.getElementById('password').setAttribute('required', 'required'); |
| } else { |
| passwordField.classList.add('hidden'); |
| document.getElementById('password').removeAttribute('required'); |
| } |
| } |
| |
| |
| function showModal() { |
| const modal = document.getElementById('devModal'); |
| modal.classList.remove('modal-hidden'); |
| modal.classList.add('modal-active'); |
| } |
| |
| function closeModal() { |
| const modal = document.getElementById('devModal'); |
| modal.classList.remove('modal-active'); |
| modal.classList.add('modal-hidden'); |
| } |
| |
| |
| window.addEventListener('load', function() { |
| if (!localStorage.getItem('modalShown')) { |
| showModal(); |
| localStorage.setItem('modalShown', 'true'); |
| } |
| }); |
| |
| |
| console.log("%cAbout Aditya Devarshi", "color: white; background-color: black; font-size: 20px; padding: 4px 8px;"); |
| console.log("%cPersonal Website: %chttps://www.adityadevarshi.online", "color: black; font-weight: bold;", "color: blue;"); |
| console.log("%cPortfolio: %chttps://github.com/devarshiadi/", "color: black; font-weight: bold;", "color: blue;"); |
| console.log("%cLinkedIn: %chttps://www.linkedin.com/in/aditya-devarshi/", "color: black; font-weight: bold;", "color: blue;"); |
| console.log("%cInstagram: %chttps://www.instagram.com/curseofwitcher/", "color: black; font-weight: bold;", "color: blue;"); |
| console.log("%cMedium: %chttps://medium.com/@devarshia5", "color: black; font-weight: bold;", "color: blue;"); |
| </script> |
| </body> |
| </html> |
|
|