This was changed
Wiki: https://github.com/bcgov/tfrs/wiki
Backend development:
A Python/Django server was developed that implements a REST interface and database design for the initial specification of the TFRS application. Additional back-end development work is needed to refine the server by reusing a [Swagger Code Generator](https://github.com/bcgov/Swagger-Codegen-Extension) mechanism to generate the code for a revised Swagger specification and refactor/add custom functions as needed to implement the new REST API.
One key path in the Swagger specification is the /api/User. Extend the User API implementation to associate a user with their authentication information received in the HTTP header information. Specifically, all users in the system will be authenticated by Siteminder (via an independent process) such that Siteminder information (UserID, UserGUID) will be available in the HTTP header. Extract that information and use it to find in the database information about the user accessing the application.
The Swagger Code Generator currently generates (amongst other code) Python/Django Models for the definitions defined in the Swagger specification. Django's ORM capabilities are subsequently used to generate the Database Model from those generated Models. Work is needed to extend the Code generator and to override some Django ORM capabilities to alter the behaviour of the generated database model. This effort will mimic comparable features implemented in the C#/.NET Core/Entity-Framework version of the generator.
- Change the item naming style to meet the NRS Standard (e.g. all upper case names with '\_' separators, no table prefixes)
- Push comments describing the items in the design (e.g. tables and attributes) into the database metadata
- Force the database to use UUIDs as keys vs. traditional sequential IDs
- Extend tables to include standard auditing fields, populated via application and/or database triggers.
User Stories
As a trading partner I need to be able to navigate through a series of self-service screens to:
- view information regarding past, proposed and pending credit-related activity including a real-time credit balance and list of activities that may impact that balance.
- enter and submit the information required to propose a credit transaction to a trading partner; accept a proposed trade from a trading partner and submit that transaction proposal to the Director for approval.
- view the information entered by the user on Transaction Details screen before proposing it to a trading partner or submitting it to the Director for approval.
- review before authorising the transaction and submitting it to the Director for approval or saving it for future.
- post a credit transfer opportunity. The offer needs to have the same information that a credit transaction proposal would have, without the transfer partner. Offer and credit transfers are separate entities.
- respond to a credit transfer opportunity with acceptance of the terms, or respond to the credit transfer opportunity with a proposal that has modified terms
The Low Carbon Fuels Branch staff need to be able to:
- input transactions to award credits for a "Part 3 Agreement" or to add validated fuel supply credits or to retire credits used for offsets in annual compliance reporting.
- sort and search the list of all transactions and be able to export/download the tabular data for analysis in excel.
- add companies, contacts, users, roles and permissions through the Swagger API
- recommend approval of a proposed low carbon fuel credit transfer
- approve the credit transfers
- retire credits from or adjust a company's credit balance
Acceptance Criteria
To be paid for this opportunity, you will:
1. Participate as a part of our team's sprint planning workshop from 1pm to 4pm on June 28th, 2017 at 3rd Floor - 1012 Douglas Street in Victoria, BC. The planning session can be rescheduled if the selected individual is not available at that time.
2. Spend a minimum of 2 hours per weekday (Tuesday - Thursday, excluding holidays, between the hours of 8:30 AM and 5:00 PM) working in person with us at our office (1012 Douglas Street in Victoria, BC) for the duration of your work. We want you to work side-by-side with our front-end developer and DevOps specialist to implement the desired functionality in our dev environment.
3. Use the existing code generator and write the required custom code to implement the back-end
a. model,
b. controller,
c. form endpoints,
d. validation of form data, and
e. automated tests for the revised set of REST end-points.
The Swagger definition for the application is in the TFRS github repo in the APISpec folder.
4. Extend the *User API as appropriate to relate the User information from the HTTP request header to a user record in the TFRS database.
5. Extend the existing swagger code generator to produce additional code that will result in a Database Model that meets the Database Architecture Standards of the Natural Resources Sector (NRS), and use the revised generator to generate the TFRS Database Model
6. Use Trello to document the work completed, to demonstrate completion of the work in this opportunity, and include as appropriate references and links on each trello task to github commits
7. Conduct knowledge transfer with the Ministry Full Stack Developer.
Proposal Evaluation Criteria
Please reference the issue name "Developing the Transportation Fuels Reporting System website back-end (BCDX-MEM-003)" in your proposal.
Informational Open House
On Thursday, June 22nd and 23rd, we will host two information sessions from 12:00PM to 1:00PM, for interested developers to talk with our team about the work. If you'd like to attend, please email Matthew.Hall@gov.bc.ca.
Please also feel free to ask questions via the comments section on the issue in GitHub.
Scoring criteria:
Please provide:
- Your confirmation of being able to meet all of the Acceptance Criteria by August 4, 2017 assuming being able to work at 50% capacitiy.
- A short (around 200 words or less would be nice) summary of your experience working with agile projects (40 points).
- References to your relevant experience and demonstrated ability to do the work (60 points).
- (preferred) a link to examples of your work (e.g. GitHub projects).
This was changed
Code Repo: https://github.com/bcgov/tfrs
Wiki: https://github.com/bcgov/tfrs/wiki
Backend development:
A Python/Django server was developed that implements a REST interface and database design for the initial specification of the TFRS application. Additional back-end development work is needed to refine the server by reusing a [Swagger Code Generator](https://github.com/bcgov/Swagger-Codegen-Extension) mechanism to generate the code for a revised Swagger specification and refactor/add custom functions as needed to implement the new REST API.
One key path in the Swagger specification is the /api/User. Extend the User API implementation to associate a user with their authentication information received in the HTTP header information. Specifically, all users in the system will be authenticated by Siteminder (via an independent process) such that Siteminder information (UserID, UserGUID) will be available in the HTTP header. Extract that information and use it to find in the database information about the user accessing the application.
The Swagger Code Generator currently generates (amongst other code) Python/Django Models for the definitions defined in the Swagger specification. Django's ORM capabilities are subsequently used to generate the Database Model from those generated Models. Work is needed to extend the Code generator and to override some Django ORM capabilities to alter the behaviour of the generated database model. This effort will mimic comparable features implemented in the C#/.NET Core/Entity-Framework version of the generator.
- Change the item naming style to meet the NRS Standard (e.g. all upper case names with '\_' separators, no table prefixes)
- Push comments describing the items in the design (e.g. tables and attributes) into the database metadata
- Force the database to use UUIDs as keys vs. traditional sequential IDs
- Extend tables to include standard auditing fields, populated via application and/or database triggers.
User Stories
As a trading partner I need to be able to navigate through a series of self-service screens to:
The Low Carbon Fuels Branch staff need to be able to:
Acceptance Criteria
To be paid for this opportunity, you will:
1. Participate as a part of our team's sprint planning workshop from 1pm to 4pm on June 28th, 2017 at 3rd Floor - 1012 Douglas Street in Victoria, BC. The planning session can be rescheduled if the selected individual is not available at that time.
2. Spend a minimum of 2 hours per weekday (Tuesday - Thursday, excluding holidays, between the hours of 8:30 AM and 5:00 PM) working in person with us at our office (1012 Douglas Street in Victoria, BC) for the duration of your work. We want you to work side-by-side with our front-end developer and DevOps specialist to implement the desired functionality in our dev environment.
3. Use the existing code generator and write the required custom code to implement the back-end
a. model,
b. controller,
c. form endpoints,
d. validation of form data, and
e. automated tests for the revised set of REST end-points.
The Swagger definition for the application is in the TFRS github repo in the APISpec folder.
4. Extend the *User API as appropriate to relate the User information from the HTTP request header to a user record in the TFRS database.
5. Extend the existing swagger code generator to produce additional code that will result in a Database Model that meets the Database Architecture Standards of the Natural Resources Sector (NRS), and use the revised generator to generate the TFRS Database Model
6. Use Trello to document the work completed, to demonstrate completion of the work in this opportunity, and include as appropriate references and links on each trello task to github commits
7. Conduct knowledge transfer with the Ministry Full Stack Developer.
Proposal Evaluation Criteria
Please reference the issue name "Developing the Transportation Fuels Reporting System website back-end (BCDX-MEM-003)" in your proposal.
Informational Open House
On Thursday, June 22nd and 23rd, we will host two information sessions from 12:00PM to 1:00PM, for interested developers to talk with our team about the work. If you'd like to attend, please email Matthew.Hall@gov.bc.ca.
Please also feel free to ask questions via the comments section on the issue in GitHub.
Scoring criteria:
Please provide:
- Your confirmation of being able to meet all of the Acceptance Criteria by August 4, 2017 assuming being able to work at 50% capacitiy.
- A short (around 200 words or less would be nice) summary of your experience working with agile projects (40 points).
- References to your relevant experience and demonstrated ability to do the work (60 points).
- (preferred) a link to examples of your work (e.g. GitHub projects).