SAFE
Search Api Front End
Who do you think we are?
Estelle Calfe, the Cakes master
(our Product Owner)
Who do you think we are?
Jakub Wojciechowski, the Wojciechowski
(great dev)
Wojciechowski
Who do you think we are?
Laura Green, the Wordsmith
(our Designer)
Who do you think we are?
Mahmut Surekci, Mamoosh
(awesome Dev and SEiT)
Mamoosh
Who do you think we are?
Arvin Bhurtun, The British Mauritian
(awesome Dev)
Who do you think we are?
Richard Kotze, Mobile
(awesome Frontend Dev)
Mobile
Who do you think we are?
Juan Flores, John Flowers
(just Dev)
How do you think we do?
Scrum:
- Daily refinements meetings: US specs (GIVEN, WHEN, THEN)
- BDD specifications when starting a US
- Product Owner Verification before testing
- US-based Deployments
- Stand Ups: use stickers
- Retrospectives: do it outside with a cup of coffee.
- Planning meetings: max 2 hours
How do you think we do?
How do you think we used to do?
eXtreme Programming and Software Craftsmanship:
- Pair Programming, yes, the proper way
- TDD the things, yes, even MVC Controllers
- Code review, criticizing everything, in a constructive way
- Continuous Integration
- Continuous Refactorings
- Code quality is our motto
Who do you think we were?
Hannah Steedman
Who do you think we were?
Hannah Steedman
Duncan Brown
Who do you think we were?
Hannah Steedman
John Arran
Duncan Brown
Who do you think we were?
Hannah Steedman
John Arran
Duncan Brown
Richard Vidis
Who do you think we were?
Head of Search
Who do you think we were?
Matt Barnden
Thank you!
Any question?
(Not very difficult please)
Why SAFE?
Genes
Before 2011...
Friends
Reunited
1911
Census
FMP.co.uk
Why SAFE?
Genes
Reunited
Back to 2011...
Friends
Reunited
1911
Census
Search
Search
Search
FMP.co.uk
Search
Why SAFE?
In 2011...
Search
Search
Search
censusrecords.com
SAPI
JSON, SOLR
Friends
Reunited
1911
Census
FMP.co.uk
Why SAFE?
SAPI
SAFE
- Unify Search Experience: across sites, across data.
- Hide complexity of querying and presenting data.
- Evolve search independently.
- Single Responsibility for Search.
- Domain experts, dedicated PO.
- Other Products, not tie RoadMap to Search.
Why SAFE?
SAPI
SAFE
Main source of Data. We get:
-Metadata: describing the data
-Datasets
SAFE is not only SAPI...
BNA
UK, IE Historical Newspapers. We get:
-Data and Metadata
Heritage
Archive
US Historical Newspapers. XML-based
How do you use SAFE...
LivesOf
TheFirst
WorldWar
SAFE
Serves Markup that can be rendered by the client browser.
As web application...
https://livesofthefirstworldwar.org/ww1-records
https://search.livesofthefirstworldwar.org/search/world-records?firstname=william&firstname_variants=true&lastname=tickle
How do you use SAFE...
LivesOf
TheFirst
WorldWar
SAFE
Serves Markup that can be rendered by the client browser.
As web application...
https://livesofthefirstworldwar.org/ww1-records
https://search.livesofthefirstworldwar.org/search/world-records?firstname=william&firstname_variants=true&lastname=tickle
How do you use SAFE...
Tree
Hints
SAFE
Serves JSON objects.
As web API...
Why don't I call SAPI for this?
How do you use SAFE...
Tree
Hints
SAFE
Serves JSON objects.
As web API...
Yes, you can. But you need to get this:
http://10.16.2.25/v6.4.0/records/metadata?consumingsiteid=FMP_US&
How do you use SAFE...
Tree
Hints
SAFE
Serves JSON objects.
As web API...
Then check fulfillments:
http://main.findmypast.com/api/v1.0.0/server/viewrecord?id=GBPRS/B/910028804&recordmetadataid=prs_all_detail_189_87_b&sourceproviderid=bsop&parentid=&defaultcreditscost=10&householdno=
How do you use SAFE...
Tree
Hints
SAFE
Serves JSON objects.
As web API...
Finally get the record:
http://10.16.2.147/v6.4.0/records/recordsinglewithsiteconfig/False/False/True/GBPRS/B/910026482.json?consumingsiteid=FMP_US
How do you use SAFE...
Tree
Hints
SAFE
Serves JSON objects.
As web API...
Instead you can use SAFE and we'll the hard work for you:
How do you use SAFE...
Tree
Hints
SAFE
Serves JSON objects.
As web API...
http://main.search.findmypast.com/secure/api/records/members/404024903?id=BMD/B/1966/3/AZ/000290/142&confirmedPurchase=False
How SAFE works
-Categories
-Regions
-Available datasets
-For a given search-type: we get the searchable fields
On Startup we get metadata from SAPI
http://search.findmypast.com/search-world-records?firstname=richard&firstname_variants=true&lastname=vidis
We present that to the user in the search forms:
How SAFE works
-Categories
-Regions
-Available datasets
-For a given search-type: we get the searchable fields
On Startup we get metadata from SAPI
http://search.findmypast.com/search-world-records?firstname=richard&firstname_variants=true&lastname=vidis
We present that to the user in the search forms:
How SAFE works
From SAPI:
- Results.
- Counts.
- Fields to be displayed in the results.
- Media (transcriptions, images, pdfs)
When searching...
http://search.findmypast.com/results/world-records?firstname=richard&firstname_variants=true&lastname=vidis
We have some configuration in SQL (fields, groups)
How SAFE works
From SAPI:
- Results.
- Counts.
- Fields to be displayed in the results.
- Media (transcriptions, images, pdfs)
When searching...
http://search.findmypast.com/results/world-records?firstname=richard&firstname_variants=true&lastname=vidis
We have some configuration in SQL (fields, groups)
How SAFE works
We check user's fulfillments with FMP:
1. User not entitled: FMP manages Registration, Paywall.
2. Entitled: FMP redirects back to SAFE and we show it.
If you want to see the transcription...
http://search.findmypast.com/record?id=192%2fvidis%2frichard%2fse23%2f2529220561
From SAPI, including:
- Record's information.
- Fields to show in the transcript.
- For census, other records in the household.
How SAFE works
We check user's fulfillments with FMP:
1. User not entitled: FMP manages Registration, Paywall.
2. Entitled: FMP redirects back to SAFE and we show it.
If you want to see the transcription...
http://search.findmypast.com/record?id=192%2fvidis%2frichard%2fse23%2f2529220561
From SAPI, including:
- Record's information.
- Fields to show in the transcript.
- For census, other records in the household.
How do we do that
ASP.Net MVC 5 (C#, jQuery, less, bootstrap (brightstrap))
Web API
Specflow, Selenium, FluentAutomation
MSpec, Jasmine, RhinoMocks
CastleWindsor
RAML
Gulp
StyleCop
Soon... JSLint, Gendarme
What we've learned
No long-living branches
Daily groomings
Specifications up-front
Be open to critic
Respect everyone, everyone has a voice
KISS, YAGNI, SRP
Follow onion architecture (http://jeffreypalermo.com/blog/the-onion-architecture-part-1/)
SafePresentation
By Juan Antonio Vicaria
SafePresentation
- 260