{"id":23589575,"url":"https://github.com/ananthuspace/url-shortener","last_synced_at":"2026-04-09T19:55:53.607Z","repository":{"id":268630181,"uuid":"903261273","full_name":"AnanthuSpace/url-shortener","owner":"AnanthuSpace","description":"A secure URL shortening application built with Express.js. It features user authentication, JWT-based token access, and secure password storage. Only authenticated users can create and manage shortened URLs. The frontend is built with React, ensuring a smooth and secure user experience.","archived":false,"fork":false,"pushed_at":"2025-02-12T13:30:56.000Z","size":433,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-12T14:46:34.833Z","etag":null,"topics":["aws","express","jwt","mongodb","nginx","nodejs","react","tailwindcss","typescript","vite"],"latest_commit_sha":null,"homepage":"https://url-shortener-ruby-six.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AnanthuSpace.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-14T06:08:50.000Z","updated_at":"2025-02-12T13:28:54.000Z","dependencies_parsed_at":"2024-12-18T00:34:30.159Z","dependency_job_id":"cfacac12-44c9-4dcc-82f9-e4e7e9f844fa","html_url":"https://github.com/AnanthuSpace/url-shortener","commit_stats":null,"previous_names":["ananthuspace/url-shortener"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnanthuSpace%2Furl-shortener","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnanthuSpace%2Furl-shortener/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnanthuSpace%2Furl-shortener/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnanthuSpace%2Furl-shortener/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnanthuSpace","download_url":"https://codeload.github.com/AnanthuSpace/url-shortener/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239420352,"owners_count":19635551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","express","jwt","mongodb","nginx","nodejs","react","tailwindcss","typescript","vite"],"created_at":"2024-12-27T06:16:04.457Z","updated_at":"2025-12-30T19:43:07.846Z","avatar_url":"https://github.com/AnanthuSpace.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# URL Shortener System\n\nThe **URL Shortener System** is a robust application designed to efficiently shorten long URLs into compact links, allowing users to manage and share URLs more effectively.\n\n## Key Features\n- **URL Shortening:** Generate short, user-friendly URLs.\n- **URL Management:** Edit and delete existing short URLs.\n- **Analytics:** Track usage and statistics for shortened URLs.\n- **Secure Backend:** Ensures safe handling of user data and links.\n- **Interactive Frontend:** User-friendly design for seamless interaction.\n\n---\n\n## How It Works:\n1. **Input URL:** Users input the long URL into the system.  \n2. **Backend Processing:** The URL is processed and stored securely in the backend.  \n3. **Short URL Generation:** A unique short link is generated and displayed.  \n4. **URL Management:** Users can view, edit, and delete their short URLs.  \n\n---\n\n## Demo\n[Live](https://urlshortener-rosy.vercel.app/)\n\n---\n\n## Screenshots\n\n![App Screenshot - Login Page](./client/public/screenshots/Login.png)\n\n![App Screenshot - Signup Page](./client/public/screenshots/Signup.png)\n\n![App Screenshot - Home Page](./client/public/screenshots/Home.png)\n\n---\n\n## Installation\n\n### Clone the repository:\n```bash\ngit clone https://github.com/AnanthuSpace/url-shortener\n```\n\n---\n\n## Folder Structure and Explanations\n\n### **Frontend:**\nThe frontend is built using **React** and **TypeScript** for a modular, scalable, and efficient UI. Here's the explanation of the key folders:  \n- **src/components:** Contains reusable UI components like buttons, cards, and input fields.  \n- **src/contexts:** Uses Context API to manage and share state across components.  \n- **src/hooks:** Contains custom React hooks for reusable logic.  \n- **src/interceptors:** Manages Axios interceptors for handling API requests and responses.  \n- **src/pages:** Includes major pages such as the Home page, Dashboard, and Error pages.  \n- **src/routes:** Defines application routes and their respective components.  \n- **src/types:** Contains TypeScript type definitions for props, state, and API responses.  \n- **App.tsx:** The main application component that sets up routes and contexts.  \n- **index.css:** Global styles for the application.  \n- **main.tsx:** Entry point for the React application.  \n\n---\n\n### **Backend:**\nThe backend is built using **Node.js** and **TypeScript**, following a modular architecture. Here's the explanation of the key folders:  \n- **src/Config:** Contains configuration files for database connections and environment setup.  \n- **src/Controllers:** Handles incoming requests, interacts with services, and returns responses.  \n- **src/Enums:** Defines enumerations used throughout the application for consistency.  \n- **src/Interfaces:** Contains TypeScript interfaces for defining data models and request/response structures.  \n- **src/Modals:** Includes Mongoose models to interact with the MongoDB database.  \n- **src/Repository:** Abstracts database operations like CRUD for improved modularity.  \n- **src/Types:** Contains custom type definitions for backend operations.  \n- **src/routes:** Defines API endpoint routes and links them to respective controllers.  \n- **src/service:** Contains business logic to process data and implement features.  \n- **app.ts:** The main entry point of the application, initializing the server and middleware.\n\n---\n\n## Run Locally\n\n### Frontend Setup:\n1. Navigate to the frontend directory:\n   ```bash\n   cd url-shortener/client\n   ```\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Start the development server:\n   ```bash\n   npm start\n   ```\n\n### Backend Setup:\n1. Navigate to the backend directory:\n   ```bash\n   cd ../server\n   ```\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Configure environment variables:\n   *(Create a `.env` file in the root of the server folder)*  \n   - `PORT=5000`  \n   - `DATABASE_URL=your_database_url`  \n   - `JWT_SECRET=your_jwt_secret`  \n\n4. Start the backend server:\n   ```bash\n   npm start\n   ```\n\n---\n\n## Environment Variables\n\n### Frontend:\nAdd the following variable to the `.env` file in the frontend directory:\n```plaintext\nVITE_API_URL=your_backend_url\n```\n\n### Backend:\nAdd these variables to the `.env` file in the backend directory:\n```plaintext\nPORT=5000\nDATABASE_URL=your_database_url\nJWT_SECRET=your_jwt_secret\n```\n\n---\n\n## Technologies Used\n\n### Frontend:\n- **Framework:** React with TypeScript  \n- **Styling:** TailwindCSS  \n- **Bundler:** Vite  \n\n### Backend:\n- **Framework:** Node.js with TypeScript  \n- **Database:** MongoDB  \n- **Authentication:** JWT  \n- **Email Service:** Nodemailer  \n\n---\n\n## Authors\n\n- [@AnanthuSpace](https://github.com/AnanthuSpace)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fananthuspace%2Furl-shortener","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fananthuspace%2Furl-shortener","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fananthuspace%2Furl-shortener/lists"}