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.
- Login
- Dashboard
- Identify Rock - Grain Size?
- Identify Rock - Does it Scratch?
- Identify Rock - Light Color?
- Identify Rock - Felsite
- Rocks
- Events
-
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.
- Intake the business requirements.
- Refine and create a title for each requirement.
- Create features based on requirements.
- Create epics and stories within GitHub whose parent is one of features.
- Create milestones that identify stories to be implemented as part of the milestone.
- Plan the milestones as not to violate implementation dependencies and in consideration of team and customer schedules.
- Implement (includes iterative technical design, development, unit testing, QA deployment, QA testing, and Production deployment)
- Track and share the progress as percentage complete of a given feature.
User Security | Rocks | User Events | Dashboard | QARP |
---|---|---|---|---|
0% | 0% | 0% | 0% | 40% |
🔴 | 🔴 | 🔴 | 🔴 | ⚪ |
- All users must be able to login. title : User Security
- All identified rocks must be searchable by all users. title : Rocks
- Significant user actions must be tracked and searchable by all users. title : User Events
- Rock identified
- User added
- User logged in
- The initial screen for the user should be a dashboard. title : Dashboard
- My Rock Identification Count
- Total Rock Identification Count
- All users should be able to identify a rock using the QARP process. title : Identify Rock
- 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.
- 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.
- 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.
- The following actions are tracked:
- 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
- The following widgets are displayed:
- 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
- Is it light or dark?
- 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
- Is it medium in color?
- Is it light in color?
- Can the rock be scratched by a knife?
- Mixed Fine and Coarse
- Not in release 1.0
- Medium to Coarse
- Not in release 1.0
- Glassy (no visible grains)
The high-level functional breakdown of RockId includes:
- General
- User Security
- Rocks
- User Events
- Rock Identification / QARP
- QARP - QARP stands for the Question, Answer, and Result Process that is used to identify a rock specimen.
- TBD - Once the application is capable of identifying a rock, this needs to be completed.
- TBD - Once the application is capable of identifying a rock, this needs to be completed.
- TBD - Once the application is capable of identifying a rock, this needs to be completed.
- 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.
- TBD - Once the application is capable of identifying a rock, this needs to be completed.
- TBD - Once the application is capable of identifying a rock, this needs to be completed.
0.1.5
- 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