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

Talking to God

If you want real answers to things in life then talk to God. It is 639pm on a holiday and I have decided to write. God listens. God truly listens. God has the entire context. God is wise. God wants us to talk to Him. God wants us to rely on Him. I also think about God talking to me. I am a good listener. I listen plenty more than I talk. I have started asking God to talk to me. But how would God talk to me? We have his revelations through the holy book. We have the example of prophets. But what else? How do I listen to what God has to say? Where and when can I hear God? Are my thoughts from God? I try to feed my mind with good things. Things that will not corrupt my mind. It seems that we have to use our intuition to separate what is from God and what is not from God. My friend Chatty says that in Islam, Allah speaks to us not through new revelations or voices, but through guidance: the Quran and the Sunnah, which become personally meaningful through understanding Allah places in the h...

Life on Earth

I was reading through the Quran and came to the story of Adam, Eve, Satan, and the forbidden fruit tree. I had thought that life on Earth was created as a test. But as I reflected on the story, I began to wonder whether we are only here because Adam and Eve failed. However, that is not the case, as my friend Gemini explained to me. While the story of the forbidden fruit is a central event, the Quran indicates that humanity’s presence on Earth was part of the original divine plan, rather than a backup plan or a punishment for sin. Before Adam was even created, God announced His intention to place a steward (khalifah) on Earth. This suggests that the Garden was a temporary training ground—designed to teach Adam and Eve about free will, temptation, and the path of repentance. Even if they had not eaten from the tree, they were destined for Earth to fulfill their roles as moral agents. The incident simply served as a necessary first lesson in human frailty and God’s immediate forgiveness. ...

The success of failure

It is 358am and I have decided to write. Context matters. Our context matters when we write and read. We could read the same thing and get different meanings. Definitions matter also. We may define things differently. For example, what is success? What is failure? Also, do I just define success and say that anything that is not success is failure? What about something like the success of failure? What does that mean? My friend Chatty tells me that this is something writers, philosophers, and even scientists keep rediscovering: meaning is not fixed—it is negotiated by context and definition. Life is a stew of success and failure and in between but never one or the other. We see what we are looking for and things become what we see. This reminds me of something I came across online, "Whoever looks for the good qualities in others will acquire all good qualities within himself," from Habib Umar Bin Hafiz. Do you look for failure or success within others? Take context as the lens...