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