A modern URL shortener built with React, Material UI and Firebase.
Authentication of this project has been taken from https://github.com/chaseoc/firebase-login-page
This project was bootstrapped with Create React App.
- Self Hosted using Firebase (Free plan)
- Admin Panel for link management
- Domain Customizable to anything you wish
- Modern, Material UI (we all love this!)
- Actively under development
I come from the PHP era. Back then we had YOURLS which gave us a perfect self-hosted URL shortener on our domains. But the YOURLS UI now feels ancient and honestly, with the availability of amazing new tech, its a sin to not use them.
This project has been created with the goal of providing a modern re-do of YOURLS and at the same time, introduce new features wherever possible!
You'll need to make the following set up:
- 
A Firebase project with Hosting (Free plan will work) 
- 
Add a Custom domain to your Firebase Hosting (you know, the shorter, the better) 
- 
Enable Email/Password authentication in your Firebase Authentication settings and set up your users. 
- 
Enable Firestore in the Firebase project. 
I went ahead and put all the installation steps into a video! You can watch the FireShort Setup Guide here -
https://www.youtube.com/watch?v=eVU0Wm3HLdM
- Clone the repo:
git clone https://github.com/xprilion/fireshort.git
- Change working directory to project:
cd fireshort
- Edit src/firebase/firebase.jsand put your Firebase Project Config here:
const firebaseConfig = {
  //Your config values
};
- Edit firebase.jsonand changehosting.sitekey:
...
"hosting": {
    "site":"yoursitename", <-- This is your firebase hosting site name
    "public": "build",
    ...
- Edit src/config.jsand updateglobal.config.mainsite:
module.exports = global.config = {
    mainsite: "https://xprilion.com" <-- your main site here
    // other global config variables you wish
};
- Local test run
npm start
If you get an error like this here:
Attempting to bind to HOST environment variable: x86_64-conda_cos6-linux-gnu
you need to remove your conda environment and set back the host. Use the following commands:
conda deactivate
export HOST=localhost
- Production build
npm run-script build
- Deploy to Firebase
firebase --project **your_project_id** deploy
- [Optional] Connect a Custom domain
Follow the Firebase documentation article to setup a custom domain for your URL shortener.
The following configurations are available:
| Parameter | Type | Description | 
|---|---|---|
| global.config.mainsite | URL | The site to which a blank suffix redirects. For ex: short.site -> long.site | 
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read : if true;
      allow write : if request.auth.uid != null;
    }
  }
}
Are you using FireShort for your URL shortener? Let me know! Feel free to put a PR with your details added to the table!
| Website | Website short description | Person | 
|---|---|---|
| xpri.dev | URL Shortener for xprilion.com | @xprilion | 
