/Rock

NewPointe's fork of Rock RMS - an Open Source Church Management System

Primary LanguageC#

Rock RMS (NewPointe Edition)

NewPointe + Rock RMS

Build Tests

Beta Deployment Production Deployment Website

Campuses attendance ERAs

NewPointe Community Church is a large, non-denominational church with multiple locations across Northeast Ohio. Our mission is to lead people to realize and reach their full potential in Jesus Christ.

Rock RMS is the open source Church Management System (ChMS/RMS/CMS) behind most of our technical endeavors. It runs everything from Sunday morning check-in to the public-facing website. It's built on ASP.NET Webforms and uses Entity Framework 6, jQuery, Bootstrap 3, and many other open source libraries.

Dev Environment Setup

Note: remind me to make a pre-built VM image for this sometime.

Prerequisites

  • A Windows PC or Windows Virtual Machine.

    Rock is built on a Windows Server stack, and uses Windows tools for development. If you don't have a Windows machine available, don't worry! There are tools like VirtualBox (free) or VMWare ($$) that you can use to run Windows in a Virtual Machine. If you have a Mac you can also use solutions like Bootcamp or Parallels. Recommended specs: a quad core processor, 8gb of RAM, and SSD with at least 50GB of free space.

  • Visual Studio Community 2019 or later

    Most internal development is done in Visual Studio. Make sure to select the "ASP.NET and web development" workload when installing it.

  • SQL Server 2017 Developer or later

    You'll want some kind of database for testing and debugging. If you already have SQL Server installed somewhere you can use that. If not, you should download and install the free developer edition. Note: SQL Server 2017 and later also have a Linux version available if you want to mess with it - my brief testing shows that it will work with Rock (and might even be a bit faster) but it has not been thoroughly stress tested so I can't give you any guarantees. You can also use Azure SQL if you want a cloud solution.

  • SQL Server Management Studio OR Azure Data Studio (formerly known as SQL Operations Studio)

    In order to directly interact with your test databases and configure your development server, you're going to need one of Microsoft's management solutions. SQL Server Management Studio (SSMS) is the standard full-featured solution, and the one I'd recommend. Azure Data Studio is a newer, cross-platform option for those who want to try it.

  • Git

    We use Git for all of our version control. While I highly recommend learning and using the standard Git command-line program, those who like clicking on things can use alternatives such as GitKraken or SmartGit. There are even some editors like Visual Studio and VS Code that have git built in!

Basic Setup

SQL Server

  1. Enable SQL Server authentication:
    • Open SSMS and log into your SQL Server.
    • Right click on your server in the Object Explorer tree and select Properties.
    • In the Properties dialog, open the "Security" page and make sure Server Authentication is set to "SQL Server and Windows Authentication mode"
    • Click OK to save any changes.
  2. Add a new user login for testing and development:
    • Open up your server in SSMS.
    • In the Object Explorer tree, go to [Your Server] -> Security -> Logins.
    • Right click on the Logins folder and choose New Login...
    • Give your new login a nice name, something like "rock-dev-user".
    • Select the "SQL Server authentication" option, give it a good alphanumeric password, and uncheck the "Enforce password policy" box.
    • Open the "Server Roles" page and check the "dbcreator".
    • Click OK to save the new login.

Rock

  1. Clone the repository into a local folder using Git:

    git clone https://github.com/NewPointe/Rock.git
    # or
    git clone git@github.com:NewPointe/Rock.git
  2. Go get some lunch, that's going to take a while.

  3. Open up /RockWeb/web.ConnectionStrings.template.config, fill in the template with your SQL Server information, and then save it as /RockWeb/web.ConnectionStrings.config. For the Database name, use something simple like "rock-test-db". Don't worry about creating the actual database just yet, we'll do that in the next section.

    It should look something like this when you're done:

    <?xml version="1.0"?>
    <connectionStrings>
      <add name="RockContext" connectionString="Data Source=localhost;Initial Catalog=rock-test-db; User Id=rock-dev-user; password=hunter2;MultipleActiveResultSets=true" providerName="System.Data.SqlClient"/>
    </connectionStrings>

Visual Studio

  1. Open the Rock.sln file in Visual Studio.
  2. Right click on the RockWeb project in the Solution Explorer and select "Set as StartUp Project"
  3. Open up the Tools menu, got to the NuGet Package Manager Section and open the Package Manager Console.
  4. At the top of the Package Manager Console, change the Default Project to "Rock.Migrations"
  5. Then, inside the console, type "Update-Database" and hit enter to run the database update command. This should create a new database on your SQL Server and run all of the migrations needed for a brand new Rock install.
  6. Go get some more lunch.

At this point you should be able to go to the Debug menu and click Start Debugging to build and open a local instance of Rock in your browser. Depending on how fast your computer's hard drive is, this will also probably take a while.

Building and Deployment

All commits are automatically built, tested, and deployed using Azure Pipelines. New changes are deployed in two stages: First, all changes are merged into the np-beta branch. Azure Pipelines will build, test, and then deploy the build on the Beta server. Once the changes have been thoroughly tested on the Beta server, they can be merged into the protected np-production branch. Azure Pipelines will run a final build/test and then wait for approval to deploy to the Production server.

Rock Developer Resources

Rock has a lot of developer resources to help you get started:

License

Rock released under the Rock Community License.

Crafted By

A community of developers led by the Spark Development Network.