Hi Dulanga,

we already talked on irc and you already talked to Alex regarding
features for our dashboard. That's great!

Some topics will repeat in this mail, but I also would like the ML to
follow our project and additionally add some more in-depth
informations.

Recap & additons
=====

As discussed we will work in an iterative approach and add widget
after widget so if we run out of time, we will have something to
deliver and don't have to throw everything away.

Have you seen the "database" tab or the "config" tab in the sidebar on the left?

Those are modules that we can hook into the Fauxton build, by
configuration. I think the idea is to create a tab "dashboard" which
is the default one after opening Fauxton in the browser. So you would
build the dashboard for Fauxton as part of Fauxton.

Alex ideas so far:

```
17:34:13 <+Kxepal> about from what to start...in issue there are some
points about showing stats and log - forget these (: _stats isn't
available for
                   cluster iface and _log is removed. but recently
visited databases, active tasks and _users/_replicator quick
management is what could
                   be really handy.
17:34:56 <+Kxepal> link to the user profile is also not relevant
anymore after backporting some cloudant features
17:35:11 <+Kxepal> but still may be handy if you find a way how (:
17:36:54 <+Kxepal> if the implementation is a set of widgets, I
believe you could make some builtin and leave a template one to let
the end users create
                   their own if they're able/would like to. in future
these are could be fauxton plugins or something.
17:39:15 <+Kxepal> cluster quick-management is also nice idea for a hot widget.
17:39:56 <+robertkowalski> good idea - i can definitely help with that
(add custom widgets on build time) - the build is complicated, but
once explained
                           it should be easy
```

So we have "custom widgets", "cluster quick-management", " recently
visited databases",  "active tasks" and "_users/_replicator quick
management"

I think two good widgets for starting are active tasks and recently
visited databases.

For active tasks we have some nice docs:
https://couchdb.readthedocs.org/en/1.6.1/api/server/common.html#get--_active_tasks

They have an own dedicated page in Fauxton (see
http://localhost:8000/#/activetasks) but a short quick condensed list
is probably very interesting to users.

For the recently visited databases we would have to store that somewhere.

If you want, you can take an existing page in Fauxton and just modify
the markup for a design mockup how the widget view may look like. But
feel also free to use pen/paper or other tools if you like that the
most.

For the mango feature I am currently working on, I took the "edit
view" template on modified the markup using the Chrome inspector of my
browser to collect some first feedback from the project members and my
team (https://cloudup.com/c26xgbWb6Ur). It does not have any
functionality, but gives other folks a rough idea what my idea for the
feature is.

the framework and react

As I already mentioned we are using React.js.

It would be nice if you can finish the tutorial at
https://github.com/ryanflorence/react-training/tree/gh-pages/lessons
until next friday by following the steps and writing that code. After
that, read 
https://medium.com/brigade-engineering/what-is-the-flux-application-architecture-b57ebca85b9e
to get a first impression how the Flux pattern works that we are
using.

After that (if you still have time left) take a look on a component
that Garren, my coworker refactored from Backbone.js to React:

https://github.com/apache/couchdb-fauxton/commit/8cbf95d34a191770cfaadf7df98e07b5652e7602

Please take a look how the data flows from the Components, using the
Actions, to the dispatcher at the Store. Feel free to litter
everything in the code with console.log to see how state changes and
how the data flows.

Hint: it is that element: https://cldup.com/4eCHVt9HHt.png


If you still have time, just try to create another menu item, called
"Dashboard". Take a look at:

https://github.com/apache/couchdb-fauxton/blob/master/settings.json.default#L8
https://github.com/apache/couchdb-fauxton/tree/master/app/addons/config

to get a first idea how to do that. Some background information:

base.js - the starting point of our module. basic configuration is done here
Question: what is `base.js` used for in the case of the config module?

routes.js - takes care that functions injecting the view into the
layout are called depending on the url given
Question: What happens if I call `http:localhost:8000/_config` and
what happens if you remove the function `apiUrl`?

views.js - contains our views - this file contains still a lot
backbone views, which we are currently migrating to react. maybe it
makes more sense to take a look at one of our react components:

https://github.com/apache/couchdb-fauxton/tree/master/app/addons/documents/changes

and how they are used currently (as we are migrating to react currently):

https://github.com/apache/couchdb-fauxton/blob/master/app/addons/documents/routes-documents.js#L195
https://github.com/apache/couchdb-fauxton/blob/master/app/addons/documents/views-changes.js#L31

The Objects are injected into the closures using AMD:

https://github.com/apache/couchdb-fauxton/blob/master/app/addons/documents/views-changes.js#L13-24

assets folder:
contains our less which is compiled to css

templates folder:
contains old backbone.js templates, you will not need them

tests folder:
contains unit and integration tests, every PR must have unit tests and
integration tests. If you never wrote tests, we will explain it to you
- it is easy once you wrote your first few ones. Basically you are
testing each time that if you put something into a function, the
expected result happens. Or that if you take an action, a state has
changed.

You can run the unit tests using `grunt test`

Single tests are run by:

```
grunt test --file="./app/addons/documents/tests/headerSpec.react.js"
```

or in the browser by test group:

```
file:///Users/robert/apache/couchdb-fauxton/test/runner.html?grep=Header%20Controller
```

(change path to your fauxton directory)

The corresponding code is:
https://github.com/apache/couchdb-fauxton/blob/master/app/addons/documents/tests/headerSpec.react.jsx

and these tests are a good example how to write a simple test for the
hello world/hello from dulanga-component:

https://github.com/apache/couchdb-fauxton/blob/master/app/addons/documents/tests/headerSpec.react.jsx#L43-61


First steps:

Create a module `dashboard` that gets displayed in the sidebar. The
route http://localhost:8000/dash will render a small React component
that display "Hello World".

If you click on the "Hello World" it ill change the content to: "Hello
from Dulanga"

While we will throw the small component away afterwards we will build
upon the other code you created. If you have time left, add a test
that the component changes the content.


Meeting Wednesday:
Feel free to join us on our weekly couchdb meeting:
http://mail-archives.apache.org/mod_mbox/couchdb-dev/201503.mbox/%3CCAJ1bcfEKOh4nvoxUqvcAcUFgg96w-JqHEefpi%2BWzazKFUPXNCg%40mail.gmail.com%3E

I will be around at least one hour before so we can chat. Contact me
if you would like to chat earlier/later. I am also around the other
days on IRC / the mailinglist and feel free to contact me in
#couchdb-dev at any time. If I am not around I will answer you once I
got online again, as I read the backlog.


Our checklist at Wednesday (lets see how far we'll get)

 - check out the active tasks api (linked on top of this mail)
 - a mockup showing some widgets and how they could look like
 - code React tutorial & read about Flux
 - take a look how we are using React
 - create another menu item, called "Dashboard", try to answer the
questions to route.js et al
 - get familiar how we test our code
 - write an hello world / hello from dulanga component that is
rendered into a screen when opening http://localhost:8000/dash or by
clicking on "dashboard" in the sidebar

That was a lot of content and please don't feel discouraged if you
don't get that far until Wednesday. We will have to find a speed which
is perfect for you and this time I tried to give enough informations
that you are not blocked until Wednesday by waiting for next steps. If
you are at the last step before Wednesday, drop me a line and I will
prepare the next steps :)

I know that you all have important exams, these are definitely more
important! Don't feel pressured by the amount of work / the amount of
informations, getting good results in the exams should be your first
priority.

Best,
Robert

On Sat, Mar 14, 2015 at 9:14 PM, Dulanga Sashika <wadsash...@gmail.com> wrote:
> Hi Robert,
>
> I went through the guidelines you provided and successfully installed and
> configured as you said. Everything works find and I played around it by
> creating a database and documents. I think I am ready for the next step and
> we can start it if you are ok :)
>
> Thank You
>
> On Sun, Mar 15, 2015 at 12:03 AM, Robert Kowalski <r...@kowalski.gd> wrote:
>
>> You're welcome.
>>
>> I also hang out in the couchdb-dev channel for around 1-3hrs if you get
>> stuck!
>>
>> On Sat, Mar 14, 2015 at 7:29 PM, Dulanga Sashika <wadsash...@gmail.com>
>> wrote:
>> > Hi Robert,
>> >
>> > Thank you very much for the quick reply. I will go through the guidelines
>> > and contact you if I have any issue with them.
>> >
>> > Thank you
>> >
>> > On Sat, Mar 14, 2015 at 11:46 PM, Robert Kowalski <r...@kowalski.gd>
>> wrote:
>> >
>> >> Hi Dulanga,
>> >>
>> >> glad you found your way to the CouchDB mailing list. Welcome :)
>> >>
>> >> CouchDB is a database written in Erlang with an HTTP API - that makes
>> >> it a great fit for web applications that don't need a server side
>> >> layer with a database driver in between. Our Project Fauxton (like a
>> >> modern PHP MyAdmin) makes use of that fact.
>> >>
>> >> Many of us hang out in freenode in #couchdb-dev including myself.
>> >> Whenever you get stuck, feel free to ask - if no one is online (e.g. I
>> >> was travelling this week) feel free to ask on the dev ML.
>> >>
>> >> We are all happy to help each other in the project :)
>> >>
>> >> If you are using windows: I am not a Windows expert - you will
>> >> probably have to use a bash emulator like "git bash" to boot the dev
>> >> environment.
>> >>
>> >> Getting started:
>> >>
>> >> For this project you will need to install at least CouchDB 1.x, an
>> >> Ubuntu package (with installation instructions) is at
>> >> https://launchpad.net/~couchdb/+archive/ubuntu/stable
>> >>
>> >> Additionally you need to install Node.js 0.10 or 0.12 (install from
>> >> https://nodejs.org)
>> >>
>> >> Booting Fauxton and first steps (type without the $):
>> >>
>> >> booting CouchDB:
>> >> $ sudo couchdb
>> >>
>> >> in another terminal, clone the admin interface:
>> >> $ git clone https://github.com/apache/couchdb-fauxton
>> >>
>> >> go to Fauxton:
>> >> $ cd couchdb-fauxton
>> >>
>> >> install dependencies:
>> >> $ npm install
>> >> $ npm install -g grunt grunt-cli
>> >>
>> >> boot the app:
>> >> $ grunt dev
>> >>
>> >> Then open your browser and go to http://localhost:8000 - you should
>> >> see a red/gray/black interface
>> >>
>> >>
>> >> That was a lot of input and especially if you are using Linux the
>> >> first time and followed the instructions you have archived a lot!
>> >>
>> >> As first step, try to create a database and a document now using the
>> >> web interface (PS we are happy about any usability feedback). :)
>> >>
>> >> I think you have your dev environment for CouchDB ready now.
>> >>
>> >> What's next:
>> >> If everything works we will take a look at Fauxtons code structure and
>> >> how it works. We will also talk about the features of the dashboard.
>> >> Let's find a date for a chat after you took a first look how Fauxton
>> >> looks like.
>> >>
>> >> We are having our weekly meeting this Wednesday, 20:00GMT
>> >> (http://arewemeetingyet.com/UTC/2015-03-14/20:00) in IRC on freenode
>> >> (see
>> >>
>> http://mail-archives.apache.org/mod_mbox/couchdb-dev/201503.mbox/%3CCAJ1bcfEKOh4nvoxUqvcAcUFgg96w-JqHEefpi%2BWzazKFUPXNCg%40mail.gmail.com%3E
>> >> )
>> >> . Feel free to join us! I will be around 1hr before if you want to
>> >> chat with me before.
>> >>
>> >>
>> >> Looking forward to work with you,
>> >> Robert
>> >>
>> >> On Sat, Mar 14, 2015 at 7:55 AM, Dulanga Sashika <wadsash...@gmail.com>
>> >> wrote:
>> >> > Hi all,
>> >> >
>> >> > I am Dulanga Sashika and I am a final year undergraduate student at
>> >> > Computer Science and Engineering department at University of Moratuwa,
>> >> Sri
>> >> > Lanka. I am really interested in java, java script, web applications,
>> >> > algorithms, data mining and machine learning. I have 6 months of
>> training
>> >> > experience at Proavos (pvt) Ltd. and in there I worked on a web
>> >> application
>> >> > that used java, JEE and Spring Framework. My final year project also a
>> >> web
>> >> > related application and I used same technologies I mentioned above for
>> >> > that. I am really interested in this project because I have a good
>> >> > experience with web applications and I love work with javascript. I am
>> >> > looking forward to contribute to this project in this summer. I like
>> to
>> >> > know more detail about this project and if you can, please guide me to
>> >> > start working on this project.
>> >> >
>> >> > Thank you.
>> >> >
>> >> > W. A. Dulanga Sashika,
>> >> > Undergraduate Student,
>> >> > Department of Computer Science and Engineering,
>> >> > University of Moratuwa.
>> >>
>> >
>> >
>> >
>> > --
>> > W. A. Dulanga Sashika,
>> > Undergraduate Student,
>> > Department of Computer Science and Engineering,
>> > University of Moratuwa.
>>
>
>
>
> --
> W. A. Dulanga Sashika,
> Undergraduate Student,
> Department of Computer Science and Engineering,
> University of Moratuwa.

Reply via email to