Skip to content

brandonroberts/analog-angular-firebase-example

Repository files navigation

Analog + Angular + Firebase

This project was generated with Analog, the fullstack meta-framework for Angular.

Setup

Run npm install to install the application dependencies.

Development

Run npm start for a dev server. Navigate to http://localhost:5173/. The application will automatically reload if you change any of the source files.

Build

Run npm run build to build the client/server project. The client build artifacts are located in the dist/analog/client directory. The server for the API build artifacts are located in the dist/analog/server directory.

Test

Run npm run test to run unit tests with Vitest.

Firebase Deployment

Analog supports Firebase Hosting with Cloud Functions out of the box.

Note: You need to be on the Blaze plan to use Analog with Cloud Functions.

If you don't already have a firebase.json in your root directory, Analog will create one the first time you run it. In this file, you will need to replace <your_project_id> with the ID of your Firebase project.

This file should then be committed to version control. You can also create a .firebaserc file if you don't want to manually pass your project ID to your firebase commands (with --project <your_project_id>):

{
  "projects": {
    "default": "<your_project_id>"
  }
}

Then, just add Firebase dependencies to your project:

npm install -D firebase-admin firebase-functions firebase-functions-test

Using Firebase CLI

You may instead prefer to set up your project with the Firebase CLI, which will fetch your project ID for you, add required dependencies (see above) and even set up automated deployments via GitHub Actions.

Install Firebase CLI globally

npm install -g firebase-tools

Note: You need to be on ^11.18.0 to deploy a nodejs18 function.

Initialize your Firebase project

firebase login
firebase init hosting

When prompted, you can enter dist/analog/public as the public directory. In the next step, do not configure your project as a single-page app.

Once complete, add the following to your firebase.json to enable server rendering in Cloud Functions:

{
  "functions": { "source": "dist/analog/server" },
  "hosting": [
    {
      "site": "<your_project_id>",
      "public": "dist/analog/public",
      "cleanUrls": true,
      "rewrites": [{ "source": "**", "function": "server" }]
    }
  ]
}

You can find more details in the Firebase documentation.

Local preview

You can preview a local version of your site if you need to test things out without deploying.

NITRO_PRESET=firebase npm run build
firebase emulators:start

Deploy to Firebase Hosting via CLI

Deploying to Firebase Hosting is a simple matter of just running the firebase deploy command.

NITRO_PRESET=firebase npm run build
firebase deploy

Community

About

An example application with Analog and Angular that deploys to Firebase hosting and functions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published