{"id":15988426,"url":"https://github.com/prescottprue/fireadmin-site","last_synced_at":"2025-03-27T06:31:04.933Z","repository":{"id":67953863,"uuid":"98719838","full_name":"prescottprue/fireadmin-site","owner":"prescottprue","description":"App for managing Firebase instances (including data migrations and analytics)","archived":false,"fork":false,"pushed_at":"2017-08-02T09:15:53.000Z","size":167,"stargazers_count":2,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-23T06:22:37.582Z","etag":null,"topics":["firebase","firebase-admin","generator-react-firebase","material-ui","migrations","react-redux-firebase"],"latest_commit_sha":null,"homepage":"https://fireadmin.io","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prescottprue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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}},"created_at":"2017-07-29T08:35:26.000Z","updated_at":"2020-06-23T18:09:48.000Z","dependencies_parsed_at":"2023-06-12T01:00:19.701Z","dependency_job_id":null,"html_url":"https://github.com/prescottprue/fireadmin-site","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffireadmin-site","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffireadmin-site/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffireadmin-site/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prescottprue%2Ffireadmin-site/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prescottprue","download_url":"https://codeload.github.com/prescottprue/fireadmin-site/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245797379,"owners_count":20673840,"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":["firebase","firebase-admin","generator-react-firebase","material-ui","migrations","react-redux-firebase"],"created_at":"2024-10-08T04:03:47.573Z","updated_at":"2025-03-27T06:31:04.266Z","avatar_url":"https://github.com/prescottprue.png","language":"JavaScript","readme":"# fireadmin-site\n\n[![NPM version][npm-image]][npm-url]\n[![Build Status][travis-image]][travis-url]\n[![Dependency Status][daviddm-image]][daviddm-url]\n[![Code Coverage][coverage-image]][coverage-url]\n[![Code Climate][climate-image]][climate-url]\n[![License][license-image]][license-url]\n[![Code Style][code-style-image]][code-style-url]\n\n## Table of Contents\n1. [Features](#features)\n1. [Requirements](#requirements)\n1. [Running Your Own](#running-your-own)\n1. [Application Structure](#application-structure)\n1. [Development](#development)\n  1. [Routing](#routing)\n1. [Testing](#testing)\n1. [Configuration](#configuration)\n1. [Production](#production)\n1. [Deployment](#deployment)\n\n## Features\n\n* Standardized Common Data Modification Actions\n* Data Migration Between Firebase instances\n* General Analytics (counts on collections)\n\n## Requirements\n* node `^5.0.0` (`6.11.0` suggested)\n* yarn `^0.23.0` or npm `^3.0.0`\n\n## Running Your Own\n\n1. Install dependencies: `yarn` or `npm install`\n\n2. Start Development server: `yarn start` or `npm start`\n\nWhile developing, you will probably rely mostly on `npm start`; however, there are additional scripts at your disposal:\n\n|`npm run \u003cscript\u003e`    |Description|\n|-------------------|-----------|\n|`start`            |Serves your app at `localhost:3000` and displays [Webpack Dashboard](https://github.com/FormidableLabs/webpack-dashboard)|\n|`start:simple`     |Serves your app at `localhost:3000` without [Webpack Dashboard](https://github.com/FormidableLabs/webpack-dashboard)|\n|`build`            |Builds the application to ./dist|\n|`test`             |Runs unit tests with Karma. See [testing](#testing)|\n|`test:watch`       |Runs `test` in watch mode to re-run tests when changed|\n|`lint`             |[Lints](http://stackoverflow.com/questions/8503559/what-is-linting) the project for potential errors|\n|`lint:fix`         |Lints the project and [fixes all correctable errors](http://eslint.org/docs/user-guide/command-line-interface.html#fix)|\n\n[Husky](https://github.com/typicode/husky) is used to enable `prepush` hook capability. The `prepush` script currently runs `eslint`, which will keep you from pushing if there is any lint within your code. If you would like to disable this, remove the `prepush` script from the `package.json`.\n\n\n## Application Structure\n\nThe application structure presented in this boilerplate is **fractal**, where functionality is grouped primarily by feature rather than file type. Please note, however, that this structure is only meant to serve as a guide, it is by no means prescriptive. That said, it aims to represent generally accepted guidelines and patterns for building scalable applications. If you wish to read more about this pattern, please check out this [awesome writeup](https://github.com/davezuko/react-redux-starter-kit/wiki/Fractal-Project-Structure) by [Justin Greenberg](https://github.com/justingreenberg).\n\n```\n.\n├── build                    # All build-related configuration\n│   └── create-config        # Script for building config.js in ci environments\n│   └── karma.config.js      # Test configuration for Karma\n│   └── webpack.config.js    # Environment-specific configuration files for webpack\n├── server                   # Express application that provides webpack middleware\n│   └── main.js              # Server application entry point\n├── src                      # Application source code\n│   ├── index.html           # Main HTML page container for app\n│   ├── main.js              # Application bootstrap and rendering\n│   ├── normalize.js         # Browser normalization and polyfills\n│   ├── components           # Global Reusable Presentational Components\n│   ├── containers           # Global Reusable Container Components\n│   ├── layouts              # Components that dictate major page structure\n│   │   └── CoreLayout       # Global application layout in which to render routes\n│   ├── routes               # Main route definitions and async split points\n│   │   ├── index.js         # Bootstrap main application routes with store\n│   │   └── Home             # Fractal route\n│   │       ├── index.js     # Route definitions and async split points\n│   │       ├── assets       # Assets required to render components\n│   │       ├── components   # Presentational React Components\n│   │       ├── container    # Connect components to actions and store\n│   │       ├── modules      # Collections of reducers/constants/actions\n│   │       └── routes **    # Fractal sub-routes (** optional)\n│   ├── static               # Static assets\n│   ├── store                # Redux-specific pieces\n│   │   ├── createStore.js   # Create and instrument redux store\n│   │   └── reducers.js      # Reducer registry and injection\n│   └── styles               # Application-wide styles (generally settings)\n├── project.config.js        # Project configuration settings (includes ci settings)\n└── tests                    # Unit tests\n```\n\n### Routing\nWe use `react-router` [route definitions](https://github.com/ReactTraining/react-router/blob/v3/docs/API.md#plainroute) (`\u003croute\u003e/index.js`) to define units of logic within our application. See the [application structure](#application-structure) section for more information.\n\n## Testing\nTo add a unit test, create a `.spec.js` file anywhere inside of `./tests`. Karma and webpack will automatically find these files, and Mocha and Chai will be available within your test without the need to import them.\n\n## Production\n\nBuild code before deployment by running `npm run build`. There are multiple options below for types of deployment, if you are unsure, checkout the Firebase section.\n\n### Deployment\n\n1. Login to [Firebase](firebase.google.com) (or Signup if you don't have an account) and create a new project\n2. Install cli: `npm i -g firebase-tools`\n\n#### CI Deploy (recommended)\n**Note**: Config for this is located within `travis.yml`\n`firebase-ci` has been added to simplify the CI deployment process. All that is required is providing authentication with Firebase:\n\n1. Login: `firebase login:ci` to generate an authentication token (will be used to give Travis-CI rights to deploy on your behalf)\n1. Set `FIREBASE_TOKEN` environment variable within Travis-CI environment\n1. Run a build on Travis-CI\n\nIf you would like to deploy to different Firebase instances for different branches (i.e. `prod`), change `ci` settings within `.firebaserc`.\n\nFor more options on CI settings checkout the [firebase-ci docs](https://github.com/prescottprue/firebase-ci)\n\n#### Manual deploy\n\n1. Run `firebase:login`\n1. Initialize project with `firebase init` then answer:\n  * What file should be used for Database Rules?  -\u003e `database.rules.json`\n  * What do you want to use as your public directory? -\u003e `build`\n  * Configure as a single-page app (rewrite all urls to /index.html)? -\u003e `Yes`\n  * What Firebase project do you want to associate as default?  -\u003e **your Firebase project name**\n1. Build Project: `npm run build`\n1. Confirm Firebase config by running locally: `firebase serve`\n1. Deploy to firebase: `firebase deploy`\n**NOTE:** You can use `firebase serve` to test how your application will work when deployed to Firebase, but make sure you run `npm run build` first.\n\n[npm-image]: https://img.shields.io/npm/v/fireadmin.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/fireadmin\n[travis-image]: https://img.shields.io/travis/prescottprue/fireadmin/master.svg?style=flat-square\n[travis-url]: https://travis-ci.org/prescottprue/fireadmin\n[daviddm-image]: https://img.shields.io/david/prescottprue/fireadmin.svg?style=flat-square\n[daviddm-url]: https://david-dm.org/prescottprue/fireadmin\n[climate-image]: https://img.shields.io/codeclimate/github/prescottprue/fireadmin.svg?style=flat-square\n[climate-url]: https://codeclimate.com/github/prescottprue/fireadmin\n[coverage-image]: https://img.shields.io/codeclimate/coverage/github/prescottprue/fireadmin.svg?style=flat-square\n[coverage-url]: https://codeclimate.com/github/prescottprue/fireadmin\n[license-image]: https://img.shields.io/npm/l/fireadmin.svg?style=flat-square\n[license-url]: https://github.com/prescottprue/fireadmin/blob/master/LICENSE\n[code-style-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square\n[code-style-url]: http://standardjs.com/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprescottprue%2Ffireadmin-site","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprescottprue%2Ffireadmin-site","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprescottprue%2Ffireadmin-site/lists"}