kiwix / overview

https://kiwix.org
88 stars 14 forks source link

Nautilus Web UI #77

Closed rgaudin closed 1 year ago

rgaudin commented 1 year ago

This ticket tracks the Kiwix GSoC 2023 Project Nautilus Web UI until code contributions and/or specific tickets requires creating its own dedicated repository.

Candidates, contributors, this ticket is the preferred location to discuss this project. Ask your questions here and mentors (@rgaudin, @kelson42) shall respond.

Mandatory reads:


Nautilus Web UI

Objective: build a web-based interface for what is currently a command-line tool.

Technologies: Python, JavaScript, HTML, CSS

Description:

Kiwix is useful because it can provide a lot of content to people without internet access. Therefore, the easiest it is to generate content that is available offline, the more users can be reached.

Nautilus is a powerful tool for creating ZIM files from collections of documents (PDF files, videos, etc.), but it currently requires the user to run commands from the command line. This makes it challenging for users (usually schools) who are not familiar with the command line or who prefer a graphical user interface.

The goal of this project is to build a web-based user interface for Nautilus, making it easier for users to convert their collections of documents into browsable ZIM files. The web UI will be built using Python, JavaScript, HTML, and CSS and will provide an intuitive and user-friendly interface for Nautilus.

Key Deliverables:

Skills required:

Difficulty: Medium, but probably a 350hrs project

rgaudin commented 1 year ago

@rgaudin You have mentioned that Nautilus is only available in windows using docker or wsl. If our application is running on windows, how do we call nautilus functions from our application?Will there be any cloud hosting of Nautilus where we can call the functions from flask or do we locally install nautilus and work on our application on top of it. If we will have to work on it locally , do we have to deploy our application by dockerizing our entire application ?

This project is about building a Web UI. Yes the backend of this WebUI will probably import some function from the nautiliszim package and call it so that the ZIM is created (and then uploaded). This will all be running on Linux, inside a docker container.

For development, you can just call a dummy function for now because this doesn't matter much until the UI is mostly done.

Darkcoder011 commented 1 year ago

Hello, I came across this project Web UI and after reading the description and details I am getting that this idea is focused on providing the best Web UI to the users so that they will be able to download and upload ZIM files easily as UI will make it easier and convenient for users rather than command line .

@rgaudin Thanks!!

Mangocod3r commented 1 year ago

Hello, I am interested in this project idea I have experience in web development based on MERN stack But I'm having a doubt like can we use react for frontend to create UI to meet requirements of this idea And please let me know if there's an demo video illustrating the same

Yashwanth1124 commented 1 year ago

Hii i am interested to work up on this project......

Elizura commented 1 year ago

Hello Congratulations for being a mentor organization for GSOC’23 ! My name is Elisur Freyesus. I'm a software engineering strudent. I'm interested in this projects and I want to contribute. I have experience in frontend development. I'm familiar with vanilla HTML, CSS, Javascript, bootstrap, tailwind. In addition to those I am familiar with frameworks like angular and flutter. I also have an in depth understanding of datastructures and algorithms with Python programming language. My aim is to gain experiences, help build a beautiful projects and keep on contributing aftwards. I will be more than happy if you could guide me through the application process as I'm new to both GSoC and OpenSource contributions. regards,

My github: https://github.com/Elizura/

MUHAMMAD-SANEEY commented 1 year ago

I am Mohammed sani Mohammed a third year student in computer engineering, I am well aware Python, JavaScript, HTML, CSS, NodeJS, I would like to contribute to your organization, specifically in this project, but could you please tell me how to get started ?

thestarsahil commented 1 year ago

@rgaudin

Sir, I am trying to fix #832 bug but running the KIWIX Desktop on visual code error occurred, firstly I cloned the desktop code and then tried to install sudo make install

sudo : The term 'sudo' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1

SMPY2002 commented 1 year ago

Hi, Myself Shivam Pandey ,A 2nd year CSE-AI Student .I have seen and studied your Nautilus Web UI project idea ,as i have a strong knowledge of python ,and Frontend and also fulfill your requirements. I want to ask you a simple question and would be happy if you reply me. My question is can i make it only using python because python also provide tkinter library for UI and also we add many features in this like adding QR with help of python so that user also handle with it smart phone. Also its debugging is somewhat simple .

Rishabhg71 commented 1 year ago

Nautilus depends on python-libzim indeed which is not supported on Windows. To use it on Windows, use it via docker

@thestarsahil you need to be in a linux env as mentioned here "Sudo" is only available on linux

thestarsahil commented 1 year ago

@RG7279805 Can'nt we operate the Code Structure in Window OS

Rishabhg71 commented 1 year ago

@thestarsahil either use WSL or docker

thestarsahil commented 1 year ago

i need to setup the run package for docker also right?

rgaudin commented 1 year ago

@thestarsahil kiwix-desktop is not involved in this ticket. If you want to browse ZIM files, download the binary release.

@SMPY2002 tkinter is for desktop UI, not Web AFAIK

kartiksprajapati commented 1 year ago

@rgaudin Hello, I wanted to ask for help regarding GSoC proposal which I have proposed and where can I send for pre-review?

aritroCoder commented 1 year ago

Hello, @rgaudin I have submitted a proposal, would the mentors connect with me regarding any suggestions or should I dm them in slack to ask for suggestions and feedback regarding the proposal?

rgaudin commented 1 year ago

We periodically look at proposals and contact authors for which we'd like to see changes.

nithinkatta commented 1 year ago

Hi, My name is Nithin currently pursuing btech 2nd year in computer science. I have great knowledge on html, css and javascript and programming languages like c,c++,java and python. I have also done some projects based on above mentioned technologies.

Fares-Basousy commented 1 year ago

Hi nice to meet you all :) My name's Fares, I'm a computer Engineer undergraduate i've worked on web apps projects using Javascript/Node.js and python/Django regarding the webpage you wanna build you got a UI in mind or do you want a design as well and i want to know if there's a UI that i'm supposed to improve or am i making one from scartch

omjaju18 commented 1 year ago

Hello @rgaudin Sir, So i understood the problem statement Currently it is a command prompt tool..and as many people or small kids don't know much about command prompt and their commands so we are going to make a website to convert a command tool to an interface

Right?

omjaju18 commented 1 year ago

@rgaudin Sir, I have thought of a solution that ELECTRON JS will be quite a useful in this making as we want to create a desktop application..ie a web interface

As we know that electron js is used for any operating system so for future purpose also we can create a web application

Electronjs can be implemented by using javascript or node js ...ie Javascript for front end purpose and Node js for backend ..and combining both we can create a desktop application also an web interface

Thank You Sir in ...Looking forward for your reply.

Omar-Elhorbity commented 1 year ago

Hi @rgaudin, Thanks for your helpful responses. I’m having trouble understanding the distinction between the Nautilus web UI and the Youzim website you referenced in the comments. Does the Youzim website zim content from URLs while Nautilus zims uploaded documents and videos?

rgaudin commented 1 year ago

Does the Youzim website zim content from URLs while Nautilus zims uploaded documents and videos?

Yes, Youzim crawls the input URL and stores a copy of the website into the ZIM.

Nautilus creates a ZIM with a standard UI for browsing a collection of files. See examples of such ZIMs at https://library.kiwix.org/?lang=fra&q=bayard

Omar-Elhorbity commented 1 year ago

Does the Youzim website zim content from URLs while Nautilus zims uploaded documents and videos?

Yes, Youzim crawls the input URL and stores a copy of the website into the ZIM.

Nautilus creates a ZIM with a standard UI for browsing a collection of files. See examples of such ZIMs at https://library.kiwix.org/?lang=fra&q=bayard

Can you provide more information about the development process of the Nautilus web UI project? Are we going to create the backend process from the beginning or will it be built on top of the openzim/nautilus package? Additionally, if I don’t have any prior experience with the openzim/nautilus package, am I still eligible to apply for the project?

KrishnaRishi2208 commented 1 year ago

@rgaudin

You have mentioned above that zip files are converted to ZIM files . Can we also allow user to provide multiple files which we can zip at the backend.

Here, will the zim file be stored on our database, or do we download the ZIM file onto user system and remove the file from our storage.

rgaudin commented 1 year ago

@KrishnaRishi2208 ZIP is an input for nautilus but the WebUI can (should) be more flexible.

As we'll create the file on the server FS, we'll have to offer it for download. It's likely that we'll upload it to an S3 bucket and send that link to the user so the user has some time to download it before it gets automatically deleted. That's how we ddo it on youzim.it

KrishnaRishi2208 commented 1 year ago

@rgaudin Do we have to implement user login while developing the application?

rgaudin commented 1 year ago

Not needed

mahidhar5169 commented 1 year ago

Hi i am mahi . I am interested in contributing to this project where can i start ?

rgaudin commented 1 year ago

I @mahidhar5169, this project is currently on-going as par as the GSoC. The repo is at https://github.com/openzim/nautilus-webui/ but I'd advise to wait for the ground work to be merged-in before contributing.