Skip to main content

Part 1 - An Example of Using Next.js for Static Site Generation on Android with Termux

Next.js is a React framework that gives you building blocks to create web applications.

First thing I did was go to github and create an empty project. I then cloned that project in Termux. You must use the Termux storage and not shared storage unless you can find a workaround for creating symlinks. I then create a starter next.js project.

npx create-next-app --example hello-world blog-posts

I used python to extract all my blog posts titles and links from my Blogger backup and create a json file. Each entry in the json file was title and link.

Next. I followed this guide to display a listing of all my blog posts.


It uses SWR and SWR is an acronym for stale-while-revalidate. The code I got from there had some problems. Dont know why it worked for them and not for me. Maybe linux/termux/android/next.js version creates the issue. After debugging and consulting ChatGPT we figured out that:

The issue with the code you provided is that you're reading the contents of the JSON file as a string using readFile and then directly returning it as the response without parsing it as JSON. To resolve this, you need to parse the file contents as JSON before sending it as the response.

Someone tweeted "Next.js is the most frustrating, opinionated mess I've ever had to deal with. Ugh." and I could not help but agree with the little I have done so far and based on my first impressions. Made me appreciate eleventy for tasks like this.

I found a simple way to serve the statically generated docs folder by running this command in that folder. However I got an error.

php -S localhost:8000

CANNOT LINK EXECUTABLE "php": library "libicuio.so.73" not found

And I had to install that package

pkg install libicu

Now I get a new error when I run npm run build

CANNOT LINK EXECUTABLE "node": library "libicui18n.so.72" not found

I then did (in termux)

apt update
apt upgrade

I then saw and an error in the logs - API Routes cannot be used with "output: export".

Below is me asking for help on Stack Overflow.


This is the project on GitHub


And that is where I have reached. The question now is how can I get around this? How to read from a json file and iterate through it and display its content in Next.js for static site generation using output as export. I am stuck and maybe you can help.

I got a recommendation to try Astro JS. That will be next. It was also suggested to use a const array of objects instead of json. Now, I am wondering if there is a way to serve the json file without using an API route. Stay tuned for part 2. Leave a comment and let me know your thoughts.

Comments

Popular posts from this blog

Drums of freedom

It is 401am and I have decided to write. This Saturday, Trinidad and Tobago observes African Emancipation Day. It is a day to celebrate the journey to freedom and to honor those who sacrificed so much so that we could enjoy the freedoms we have today. Yet the journey is not over. As we celebrate how far we have come, let us also ask God to open our minds and hearts to the struggles that continue. Freedom is never something we should take for granted. Every day, we witness powerful interests around the world attempting to stifle freedom in pursuit of their own agendas and self-aggrandizement. Too often, they seek to divide in order to conquer. May we resist division with wisdom, courage, and compassion. May unity triumph over hatred, truth over deception, and love over fear. As we remember the past, may we also commit ourselves to protecting the freedoms of the present and building a more just future for generations to come. Happy African Emancipation Day. May God continue to guide us o...

Positive vibration

It was 422pm and I decided to write. There was a peace in my heart that could only come from God. But what should I write about? "God, give me a sign. God, give me direction. Place a topic on my heart. Open my eyes and my ears to Your leading." The next morning, I woke up with a positive vibration. My heart felt light, and my mind was clear. It got me thinking. Sometimes, we simply need to clear our minds of negativity. We need to stop feeding fear, doubt, and discouragement, and instead make room for hope, faith, and positive possibilities. We need to reset our minds, renew our spirits, and re-energize our hearts. Then, we can return stronger to face whatever challenges lie ahead. If something is within our control, let us do our best to improve it. If it is beyond our control, let it go and let God. Life will always have difficulties, but we have a choice in how we respond to them. We can choose to see opportunities where others see obstacles. We can find lessons in our set...

Foundation of my belief

It is 159am and I have decided to write. Some people say that science does not point to an afterlife, heaven or the existence of God. I feel bad because I cannot give them the evidence that they want. I can point them to the Quran and Islamic teachings. The Quran is a miracle and there are signs in that which we can research. Otherwise, there are philosophical and theological arguments. Maybe, you cannot use the science that we have for something (the afterlife) that is outside the realm of science. Also, science is not complete and may never be complete. Scientific knowledge is expanding and sometimes changing, so are we going to wait on science to tell us that there is a God and afterlife? Belief does not need evidence. Faith does not need evidence. At least not the evidence that some are looking for. So what is the foundation of my faith? For some people theology does not fully explain this life so they look to the science we have. For me, science alone does not explain this life, s...