Skip to content

A simple application about identifying rocks but used for demonstrating software implementation.

License

Notifications You must be signed in to change notification settings

erniep888/RockId

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RockId

Definition

The application is called RockId. It allows a person to identify a rock based on responses to a series of questions and answers. Each identified rock is placed in a rock collection where more information can be associated with the rock. All significant events can be viewed by all users and all identified rocks can be viewed by all users.

RockId provides a consistent problem domain for research in implementation strategies and technologies relating to web and mobile development. This allows my team to brainstorm and share design ideas, project management approaches, and more before committing to new endeavors where the business domain is not well known. Anyone that reads this should feel free to clone, change, and contribute ideas for new approaches or technological solutions.


Deployment Architecture


Wireframes


Screenshots


Project Structure

  • Documents - Contains all documentation for the entire application.

  • Source - Contains all of the application source code

    • UI - Contains the user interface implemented in Angular 7
    • Api Gateway - Contains the Ocelot API Gateway that enables a single entry point for all api calls to the backend among other benefits.
    • Api - QARP - Contains the microservice api that implements a Question, Answser, and Result Process to identify rocks.
    • Api - Rocks - Incomplete Contains the microservice api that allows identified rocks to be searched, edited, and removed.
    • Api - Event Logger - Incomplete Contains the microservice api that allows all other services to log specific events and actions.
    • Api - Identity - Incomplete This microservice is an identity provider implemented with IdentityServer 4.
    • Common - EventBus - Incomplete Contains an event bus that leverages RabbitMQ in order to allow services to communicate in a loosely coupled manner.
    • Common - Models - Provides model implementations that are shared among the Api projects.

Project Process

  1. Intake the business requirements.
  2. Refine and create a title for each requirement.
  3. Create features based on requirements.
  4. Create epics and stories within GitHub whose parent is one of features.
  5. Create milestones that identify stories to be implemented as part of the milestone.
  6. Plan the milestones as not to violate implementation dependencies and in consideration of team and customer schedules.
  7. Implement (includes iterative technical design, development, unit testing, QA deployment, QA testing, and Production deployment)
  8. Track and share the progress as percentage complete of a given feature.

Project Status

User Security Rocks User Events Dashboard QARP
0% 0% 0% 0% 40%
🔴 🔴 🔴 🔴

Business Requirements

  1. All users must be able to login. title : User Security
  2. All identified rocks must be searchable by all users. title : Rocks
  3. Significant user actions must be tracked and searchable by all users. title : User Events
    • Rock identified
    • User added
    • User logged in
  4. The initial screen for the user should be a dashboard. title : Dashboard
    • My Rock Identification Count
    • Total Rock Identification Count
  5. All users should be able to identify a rock using the QARP process. title : Identify Rock

Features Based On Requirements

  1. User Security
    • Detail: All users must be known to the system.
    • Solution:
      • Anonymous user access is denied.
      • All users must login in with an email address
      • All users have a password that is 8 to 32 characters long and alphanumeric with special characters.
  2. Rocks
    • Detail: All rocks that have been identified should be visible to all other authenticated users.
    • Solution:
      • Once a rock has been successfully identified, it will be displayed in a list displayed in the order of completion date.
      • All identified rocks will be displayed in one page.
  3. User Events
    • Detail: All actions are tracked and displayed for all authenticated users.
    • Solution:
      • The following actions are tracked:
        • Login
        • Logout
        • Rock identified
        • User added
      • All actions will be displayed in one page.
  4. Dashboard
    • Detail: Two widgets are displayed on the dashboard for all authenticated users.
    • Solution:
      • The following widgets are displayed:
        • My Rock Identification Count
        • Total Rock Identification Count
  5. QARP
    • Detail: An authenticated user can step through the process to identify a rock.
    • Solution:
      • For 1.0, this feature only implements identification of glassy and fine-grained rocks. The authenticated user will answer questions to identity the rock.
      • What is the grain size?
        • Glassy (no visible grains)
          • Is it light or dark?
            • Light is Igneous - Quartz.
            • Dark is Igneous - Obsidian
        • Fine Grained (not easy to see grains)
          • Can the rock be scratched by a knife?
            • Yes, and it is dense and brittle - Sedimentary - Chert.
            • No
              • Is it light in color?
                • Yes, with glossy grains - Metamorphic - Quartzite.
                • Yes, with dull grains - Igneous - Felsite.
                • No
                  • Is it medium in color?
                    • Yes - Igneous - Andesite.
                    • No - It is dark in color.
                      • Does it fizz with acid?
                      • Yes, vigorously - Sedimentary - Limestone.
                      • Yes, with difficulty or with rock powder - Sedimentary - Dolomite.
                      • No
                      • Does it have layers?
                      • Yes, it splits easily into thin smooth sheets - Metamorphic - Slate
                      • Yes, it does not split easily - Metamorphic - Shale
                      • No, it does have slippery feel colored green to black - Metamorphic - Serpentine
        • Mixed Fine and Coarse
          • Not in release 1.0
        • Medium to Coarse
          • Not in release 1.0

Implementation Notes

The high-level functional breakdown of RockId includes:


Concepts

  • QARP - QARP stands for the Question, Answer, and Result Process that is used to identify a rock specimen.

Development

Installation Steps

  • TBD - Once the application is capable of identifying a rock, this needs to be completed.

Build

  • TBD - Once the application is capable of identifying a rock, this needs to be completed.

Development Run

  • TBD - Once the application is capable of identifying a rock, this needs to be completed.

Unit Test

  • SUT is System Under Test
  • xunit, Moq, and AutoFixture are used to provide a testing framework, an injection framework, and a mock data framework respectively.

End-to-End Test

  • TBD - Once the application is capable of identifying a rock, this needs to be completed.

All Tests

  • TBD - Once the application is capable of identifying a rock, this needs to be completed.

Version

0.1.5

Languages

ChangeLog

  • 0.1.5
    • Implemented the Glassy grain size question and answers.
  • 0.1.1
    • Update to release numbering to match the milestone numbering.
  • 0.1.0
    • Milestone 1 is complete
    • Database migrations implemented
    • QARP Web Api implemented for first question and answers
    • UI leverages the QARP Web Api
  • 0.0.4
    • Removed Docker container development and switching to Material Design
  • 0.0.3
    • Switching to a Docker Container development and deployment approach
  • 0.0.2
    • Created features, epics, milestones, and wire frames
  • 0.0.1
    • initial creation

About

A simple application about identifying rocks but used for demonstrating software implementation.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published