In 2012 the King of Spain, Juan Carlos I, transferred 65 million euros to a friend from a secret account in Switzerland. What lies actually behind this rare donation? This repository contains the full source code of the website ladonacion.es.

Overview

La Donación full source code and documentation

AGPL License Botón para donar en Patreon


This documentation draft is a work in progress. I expect to have it completed by September 24, 2022.


Like it? Then star it on GitHub. It only costs you a click and it greatly helps discoverabilty. ❤️


La donación (Spanish for "the donation") is a data-driven set of rich interactive visualizations exposing all the known details about the donation in 2012 of 65 million euros from the then King of Spain, Juan Carlos I, to businesswoman and socialite Corinna zu Sayn-Wittgenstein.

The whole project, from the design of the data model to the coding itself, has been done in 2021 by me, Jaime Gómez-Obregón.

This repository holds the full source code of the website at ladonacion.es and the documentation needed to understand its architecture. By open sourcing it I aim to encourage and pave the road for other data and investigative journalists to share their own stories of public interest by reusing and building upon my work.

While the web application is intended for a Spanish audience, both the source code and this documentation are written in English.

I have gathered all of the data exclusively from public sources. Most of it comes from the legal proceedings, mainly in Geneve, Switzerland, leaked to and published by the European press. Other sources featured in the application's extensive library ("Biblioteca") include:

  • The Panama and Paradise papers and the Bahamas Leaks, all three published by the International Consortium of Investigative Journalists (ICIJ)
  • The United Kingdom Companies House
  • The Spanish Official Gazette ("Boletín Oficial del Estado")
  • The Spanish Royal Household itself

I haver collected, analyzed and connected these documents with the help of a custom methodoly and tooling available under /data and /bin. These two are not deployed, but used to validate and compile the final data structure consumed by the web application.

A document-driven tool for exploration

This is a highly relevant and polarizing story in Spain and it has been one of my goals from the very beginning to approach it from a document-driven and opinion free framework.

The information architecture behind the application is laid out in a fashion which makes it impossible to assert a fact if there is not at least one document in the library providing evidence. So no claim is made and no position is taken from me as a storyteller, and this is by design.

Reuse and adapt it to convey your story!

This GitHub repository contains both the web application powering the interactive visualizations and the details around this particular story. Both —code and data— are separated and decoupled.

This means the application can be easily reused and adapted to power other investigations. It best fits one which has can be clearly expressed in the following four planes:

1. A network of relations between persons or business entities. ("Who is who")
2. A sequential set of events. ("The facts")
3. A geographical dimension. ("The places")
4. A repository of documents from which the whole story is derived. ("The library")

Technical overview

The technological stack comprises only web standards. The application is fully static and writen in modern JavaScript (ECMAScript 6), web components, ES modules, shadow DOM, HTML5, CSS3. Therefore there are no other user requisites than a modern web browser.

The user interface is fully componentized. Other of my goals with this project has been to demonstrate that it is possible to build a reasonably complex web application without frontend frameworks such as React, Vue or Angular, and in the absence of transpilers such as Babel and complex build processes.

The Who is who dynamic graph is built upon Mike Bostock's excelent D3 charting library. The rest of the site if manually crafted.

Deployment

Deploy to production is done via rsync with every push to the master branch. See the provided GitHub action at /.github/workflows/main.yml.

How to contact, ask and contribute

Like in any open source software project, contributions to this repository are very welcome. However, before submitting your contribution please note the following:

  • If you detect any issue in the software or have any questions, comments or requests, please open an issue here on Github and I or the community will try to resolve it or respond to you.

  • If your contribution or comment is about the plot of the story, please keep in mind that I will only incorporate factual data that is supported by public sources or documents, ideally official sources and sufficiently established and recognized public media. This is not a place for opinions, subjectivities or untested assumptions.

  • Feel free to submit pull requests with your contributions, but before contributing, please open an issue first and share your plans. I have a very clear vision for this project and its goals, as well as high standards for merging contributions, so sharing your plans in an issue beforehand will maximize the chances of it being accepted.

  • If you want to specifically address me as the original author of this project, you can reach me on Twitter.

How to help

  1. Star this project on GitHub. It costs you only a click and it greatly helps its discoverabilty.

  2. Contribute code or documentation.

  3. Support me on Patreon.

License

This project is released under the GNU Affero General Public License (see /LICENSE).

La donación
Copyright (C) 2021-2022 Jaime Gómez-Obregón

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

This documentation draft is a work in progress. I expect to have it completed by September 24, 2022.


You might also like...

This project contains a leader board for a game which contains players name and list and store them on API build with HTML, CSS, JS and API

Leaderboard This App is a Game Leaderboard app Which is created by JavaScript and the big picture of this application is using API. Build With 👩‍🔧 .

Aug 22, 2022

click your any waifu, or...... friend?

popwaifu Here is popwaifu.click backend project. Frontend project is on popwaifu-web run server Install Node.js I use 14.17.6 when writing this, recom

Feb 17, 2022

🐶 Learn JS Promises, with your friend 👑 Princess!

🐶 Learn JS Promises, with your friend 👑 Princess!

Jun 9, 2022

This is a tic-tac-toe game but differs from most others as it carries the option of playing against an AI (COM) or against a friend.

This is a tic-tac-toe game but differs from most others as it carries the option of playing against an AI (COM) or against a friend.

TIC-TAC-TOE This is a simple tic-tac-toe game with the exception of playing against an algorithm or against a friend. At the very start, you have to s

Jul 2, 2022

Friend Finder App, asks questions and recommends friends

Friendology Friend Finder app created as a Course Project for CS-522 Social Computing, at IIT Ropar. The application asks questions regarding lifestyl

Apr 26, 2022

Crawl WeChat Moments and visualize friend interactions.

请注意:微信朋友圈内容可能涉及隐私,如果要使用本爬虫进行个人研究以外的其他活动,请仔细考虑可能带来的社会影响与法律后果。 使用方法: 配环境。 conda create -n friends conda activate friends conda install psutil conda inst

Aug 22, 2022

Hash.js is a 0.5 KB script that lets you in a super simple way manipulate everything behind # in urls.

Hash.js - URL Hash Manipulation Hash.js is a 0.5 KB script that lets you in a super simple way manipulate everything behind # in urls. Tested in lates

Aug 1, 2022

Customizable masonry Flatlist. it just behave like Flatlist but using ScrollView behind the scene

Customizable masonry Flatlist. it just behave like Flatlist but using ScrollView behind the scene

Would you like to support me? react-native-masonry-grid Customizable masonry Flatlist. it just behave like Flatlist but using ScrollView behind the sc

Sep 7, 2022

A free and open-source Automatic Account Creator (AAC) written in Javascript Stack;

A free and open-source Automatic Account Creator (AAC) written in Javascript Stack;

A free and open-source Automatic Account Creator (AAC) written in Javascript Stack. 👨🏾‍💻 Techs Front-end Vue.js Vuex-module-decorators Vuetify.js N

Sep 19, 2022
Comments
  • Desbordamiento del texto

    Desbordamiento del texto

    Hola Jaime. Me he fijado que al acceder a la página web desde mi navegador esta no muestra correctamente el texto principal de: ¿Qué hay detrás de esta extraña donación?.

    El problema parece ser que viene cuando la pantalla es de una anchura 1025 o superior, te adjunto una captura pantalla para que lo visualices.

    imagen

    opened by nacholopex 1
Owner
Jaime Gómez-Obregón
Utilizo datos y tecnología para dar más transparencia a las cosas del sector público en España.
Jaime Gómez-Obregón
Million is a lightweight (<1kb) Virtual DOM. It's really fast and makes it easy to create user interfaces.

?? Watch Video ?? Read the docs ?? Join our Discord What is Million? Million is a lightweight (<1kb) Virtual DOM. It's really fast and makes it easy t

Derek Jones 5 Aug 24, 2022
Autocompletion, in-code secret peeking 🔎, syncing, and more, for your .env files in VSCode. 👑 From the same people who pioneered dotenv.

Dotenv Official (with Vault) for VSCode Official Dotenv. Syntax highlighting, autocompletion, in-code secret peeking, and .env file syncing with Doten

Dotenv 19 Sep 14, 2022
Example-browserstack-reporting - This repository contains an example of running Selenium tests and reporting BrowserStack test results, including full CI pipeline integration.

BrowserStack reporting and Selenium test result example This repository contains an example of running Selenium tests and reporting BrowserStack test

Testmo 1 Jan 1, 2022
FrontendMasters Course Downloader That actually works.

Frontend Masters Downloader Features Download episodes sorted by their lesson/section Option to include subtitles/captions to the episodes Support mul

Abdulrahman Salah 4 Sep 20, 2022
A private chatroom for discussing secret stuff.

?? Socket.IO IRC A private chatroom for discussing secret stuff. The Problem Almost all chatapps nowadays aren't safe enough for private communication

Melvin Chia 6 Aug 16, 2022
A password management tool(secret-mission)

Secret-Mission是一个密码管理桌面应用,使用Electron和React编写,所有密码数据均保存在本地,使用二进制文件存储,账户密码和用户密码均使用加密处理,使用简单、安全、快捷,使用前请仔细阅读使用说明。 开发要求 Node.js ^14.18.1 版本开发 NPM ^6.14.15

qiangck 3 May 22, 2022
This Next.js app is designed to be used with the Figment Learn Pathways, to help developers learn about various blockchain protocols such as Solana, NEAR, Secret, Polygon and Polkadot!

???? What is learn-web3-dapp? We made this decentralized application (dApp) to help developers learn about Web 3 protocols. It's a Next.js app that us

t0nto 3 Sep 18, 2022
Web client with support for secret chats. Made as a temporary solution

Arcanugram – Unofficial Telegram Web App with support for secret chats ⚠️ Made as a temporary solution for use on devices that do not have any clients

null 12 Sep 19, 2022
SAP Community Code Challenge: This repository contains an empty OpenUI5 application and end-to-end tests written with wdi5. Take part in the challenge and develop an app that passes the tests.

SAP Community Code Challenge - UI5 The change log describes notable changes in this package. Description This repository is the starting point for the

SAP Samples 8 Aug 2, 2022
Automatically sync your leetcode solutions to your github account - top 5 trending GitHub repository

LeetHub - Automatically sync your code to GitHub. Top 5 Trending JavaScript Repositories Available on: What is LeetHub? A chrome extension that automa

Qasim Wani 2.4k Sep 24, 2022